Commit Graph

1578 Commits

Author SHA1 Message Date
Bartosz Taudul
561d2dc360 Use the fastest mutex available.
The selection is based on the following test results:

MSVC:
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 11.641 ns/iter
     2 thread contention: 141.559 ns/iter
     3 thread contention: 242.733 ns/iter
     4 thread contention: 409.807 ns/iter
     5 thread contention: 561.544 ns/iter
     6 thread contention: 785.845 ns/iter
=> std::mutex
     No contention: 19.190 ns/iter
     2 thread contention: 39.305 ns/iter
     3 thread contention: 58.999 ns/iter
     4 thread contention: 59.532 ns/iter
     5 thread contention: 103.539 ns/iter
     6 thread contention: 110.314 ns/iter
=> std::shared_timed_mutex
     No contention: 45.487 ns/iter
     2 thread contention: 96.351 ns/iter
     3 thread contention: 142.871 ns/iter
     4 thread contention: 184.999 ns/iter
     5 thread contention: 336.608 ns/iter
     6 thread contention: 542.551 ns/iter
=> std::shared_mutex
     No contention: 10.861 ns/iter
     2 thread contention: 17.495 ns/iter
     3 thread contention: 31.126 ns/iter
     4 thread contention: 40.468 ns/iter
     5 thread contention: 15.677 ns/iter
     6 thread contention: 64.505 ns/iter

Cygwin (clang):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 11.536 ns/iter
     2 thread contention: 121.082 ns/iter
     3 thread contention: 396.430 ns/iter
     4 thread contention: 672.555 ns/iter
     5 thread contention: 1327.761 ns/iter
     6 thread contention: 14151.955 ns/iter
=> std::mutex
     No contention: 62.583 ns/iter
     2 thread contention: 3990.464 ns/iter
     3 thread contention: 7161.189 ns/iter
     4 thread contention: 9870.820 ns/iter
     5 thread contention: 12355.178 ns/iter
     6 thread contention: 14694.903 ns/iter
=> std::shared_timed_mutex
     No contention: 91.687 ns/iter
     2 thread contention: 1115.037 ns/iter
     3 thread contention: 4183.792 ns/iter
     4 thread contention: 15283.491 ns/iter
     5 thread contention: 27812.477 ns/iter
     6 thread contention: 35028.140 ns/iter
=> std::shared_mutex
     No contention: 91.764 ns/iter
     2 thread contention: 1051.826 ns/iter
     3 thread contention: 5574.720 ns/iter
     4 thread contention: 15721.416 ns/iter
     5 thread contention: 27721.487 ns/iter
     6 thread contention: 35420.404 ns/iter

Linux (x64):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 13.487 ns/iter
     2 thread contention: 210.317 ns/iter
     3 thread contention: 430.855 ns/iter
     4 thread contention: 510.533 ns/iter
     5 thread contention: 1003.609 ns/iter
     6 thread contention: 1787.683 ns/iter
=> std::mutex
     No contention: 12.403 ns/iter
     2 thread contention: 157.122 ns/iter
     3 thread contention: 186.791 ns/iter
     4 thread contention: 265.073 ns/iter
     5 thread contention: 283.778 ns/iter
     6 thread contention: 270.687 ns/iter
=> std::shared_timed_mutex
     No contention: 21.509 ns/iter
     2 thread contention: 150.179 ns/iter
     3 thread contention: 256.574 ns/iter
     4 thread contention: 415.351 ns/iter
     5 thread contention: 611.532 ns/iter
     6 thread contention: 944.695 ns/iter
=> std::shared_mutex
     No contention: 20.805 ns/iter
     2 thread contention: 157.034 ns/iter
     3 thread contention: 244.025 ns/iter
     4 thread contention: 406.269 ns/iter
     5 thread contention: 387.985 ns/iter
     6 thread contention: 468.550 ns/iter

Linux (arm64):
=== Lock test, 6 threads ===
=> NonRecursiveBenaphore
     No contention: 20.891 ns/iter
     2 thread contention: 211.037 ns/iter
     3 thread contention: 409.962 ns/iter
     4 thread contention: 657.441 ns/iter
     5 thread contention: 828.405 ns/iter
     6 thread contention: 1131.827 ns/iter
=> std::mutex
     No contention: 50.884 ns/iter
     2 thread contention: 103.620 ns/iter
     3 thread contention: 332.429 ns/iter
     4 thread contention: 620.802 ns/iter
     5 thread contention: 783.943 ns/iter
     6 thread contention: 834.002 ns/iter
=> std::shared_timed_mutex
     No contention: 64.948 ns/iter
     2 thread contention: 173.191 ns/iter
     3 thread contention: 490.352 ns/iter
     4 thread contention: 660.668 ns/iter
     5 thread contention: 1014.546 ns/iter
     6 thread contention: 1451.553 ns/iter
=> std::shared_mutex
     No contention: 64.521 ns/iter
     2 thread contention: 195.222 ns/iter
     3 thread contention: 490.819 ns/iter
     4 thread contention: 654.786 ns/iter
     5 thread contention: 955.759 ns/iter
     6 thread contention: 1282.544 ns/iter
2018-07-14 00:39:01 +02:00
Bartosz Taudul
a26ab263dd Select/unselect all plot visibility. 2018-07-14 00:10:38 +02:00
Bartosz Taudul
f4f7e58e88 Add select/unselect all threads visibility option. 2018-07-14 00:08:37 +02:00
Arvid Gerstmann
9ac47eef0a Merged in Leandros99/tracy/dev (pull request #9)
Couple of minor compatibility fixes
2018-07-13 22:05:13 +00:00
Bartosz Taudul
e285c837a4 Support TRACY_NO_EXIT env variable in addition to define. 2018-07-13 23:55:40 +02:00
Arvid Gerstmann
34533ad4f1 Dynamically import GetDpiForSystem, to support older Windows versions 2018-07-13 23:41:38 +02:00
Arvid Gerstmann
0b1c2ebc8f Define M_PI_2 if not already done 2018-07-13 23:41:12 +02:00
Arvid Gerstmann
ebd1d00178 Correctly forward declare Win32 functions
_WINDOWS_ is the macro defined by the windows.h header guard,
checking it whether the symbols have already been included before
forward declaring our own.
2018-07-13 23:39:58 +02:00
Arvid Gerstmann
32fc011f80 Silence unused parameter warning 2018-07-13 23:39:25 +02:00
Bartosz Taudul
c3ba0ef4eb Fix lua zone state init. 2018-07-13 20:21:50 +02:00
Bartosz Taudul
26f2cb336e Return value from non-void function. 2018-07-13 20:12:39 +02:00
Bartosz Taudul
a3c898f8b8 Rename FrameMark() to SendFrameMark().
This avoids conflict with FrameMark define.
2018-07-13 20:09:19 +02:00
Arvid Gerstmann
0e59c6e98d Merged in Leandros99/tracy/concurrentqueue-namespace (pull request #8)
Wrap concurrentqueue in tracy namespace
2018-07-13 18:06:42 +00:00
Arvid Gerstmann
6b87aecdce Wrap concurrentqueue in tracy namespace 2018-07-13 20:01:27 +02:00
Arvid Gerstmann
575b04076f Merged in Leandros99/tracy/fix-unix-semaphore (pull request #7)
Do not include the semaphore headers inside namespace tracy
2018-07-13 17:54:35 +00:00
Arvid Gerstmann
6fee78dfee Do not include the semaphore headers inside namespace tracy 2018-07-13 19:51:24 +02:00
Arvid Gerstmann
3e012cb762 Compile standalone on macOS 2018-07-13 19:22:09 +02:00
Bartosz Taudul
96042891f7 Reintroduce explicit template type for std::lock_guard.
Requested in issue #4 for support of older MSVC versions.
2018-07-13 12:30:29 +02:00
Bartosz Taudul
90a874f311 Require MSVC 15.7 for <execution> support. 2018-07-13 12:26:02 +02:00
Bartosz Taudul
e9a971bacf Mention on-demand mode in FAQ. 2018-07-12 13:32:49 +02:00
Bartosz Taudul
b85a8a62a2 Document TRACY_ON_DEMAND macro. 2018-07-12 13:27:02 +02:00
Bartosz Taudul
2806bfaac7 Update NEWS. 2018-07-12 13:24:51 +02:00
Bartosz Taudul
b11695111d Implement on-demand Lua zone capture. 2018-07-12 12:53:35 +02:00
Bartosz Taudul
fbc5556ddd Send memory events in on-demand mode. 2018-07-12 01:36:01 +02:00
Bartosz Taudul
c8b5b9447d Ignore dangling memory frees in on-demand mode. 2018-07-12 01:35:32 +02:00
Bartosz Taudul
e5064dec1e Store on-demand connection state. 2018-07-12 01:21:04 +02:00
Bartosz Taudul
dacbfbd031 Support on-demand OpenGL tracing. 2018-07-11 17:10:53 +02:00
Bartosz Taudul
d0868b5004 Early exit in GpuCtx::Collect(). 2018-07-11 17:10:34 +02:00
Bartosz Taudul
0cbeea97a2 Support on-demand Vulkan tracing. 2018-07-11 17:03:00 +02:00
Bartosz Taudul
1f7246f6b9 Defer OpenGL/Vulkan context announce. 2018-07-11 15:00:30 +02:00
Bartosz Taudul
26d5c4b302 Fix copy pasta. 2018-07-11 14:43:38 +02:00
Bartosz Taudul
96f39281a1 Implement on-demand locks. 2018-07-11 14:17:20 +02:00
Bartosz Taudul
d87508901f Send deferred data. 2018-07-11 12:28:40 +02:00
Bartosz Taudul
ad0a75da7d Defer lock announcements. 2018-07-11 12:24:58 +02:00
Bartosz Taudul
475d151b2d Implement deferring items. 2018-07-11 12:21:39 +02:00
Bartosz Taudul
a99d74966c Active status of scoped zone can't change. 2018-07-11 12:16:55 +02:00
Bartosz Taudul
52207f20b7 Add deferred events queue. 2018-07-11 12:14:28 +02:00
Bartosz Taudul
c2659473fd Free memory associated with cleared queue items. 2018-07-11 01:34:48 +02:00
Bartosz Taudul
ef73979fb9 MemRead() uses const pointer. 2018-07-11 01:33:27 +02:00
Bartosz Taudul
b1a71174db Messages are also safe. 2018-07-10 23:09:59 +02:00
Bartosz Taudul
e80c677fa0 Plots can be safely sent in on-demand mode. 2018-07-10 23:06:27 +02:00
Bartosz Taudul
d1ddaa8d59 Store frame offset in trace dumps. 2018-07-10 22:56:41 +02:00
Bartosz Taudul
fe449f366f Use frame offset for frame count and missed frames display. 2018-07-10 22:51:24 +02:00
Bartosz Taudul
a78981e040 Store on-demand frame offset. 2018-07-10 22:42:00 +02:00
Bartosz Taudul
6a9caabc63 Send on-demand initial payload message. 2018-07-10 22:37:39 +02:00
Bartosz Taudul
32ca54a523 Pack WelcomeMessage. 2018-07-10 22:29:31 +02:00
Bartosz Taudul
43d5ab4382 Count frames in on-demand mode. 2018-07-10 22:27:19 +02:00
Bartosz Taudul
03794a2957 Send frame marks in on-demand mode. 2018-07-10 22:27:19 +02:00
Bartosz Taudul
f8b2ffdc7e Clear queues before new on-demand connection is made. 2018-07-10 22:27:19 +02:00
Bartosz Taudul
a767c5ea08 Trace zones in on-demand mode. 2018-07-10 22:27:19 +02:00