Commit Graph

1764 Commits

Author SHA1 Message Date
Bartosz Taudul
c07c6d11b7 Define server query packet. 2019-04-01 19:21:53 +02:00
Bartosz Taudul
45750a05a1 Only smooth zoom now. 2019-04-01 18:39:09 +02:00
Bartosz Taudul
cd774b9e96 Store two entries in zone self time cache.
This accounts for situation when zone information window is open and a
tooltip for another zone is displayed.
2019-03-30 00:54:22 +01:00
Bartosz Taudul
48a07bf4f8 Cache zone self times. 2019-03-30 00:52:25 +01:00
Bartosz Taudul
fef417f286 Store total number of CPU and GPU zones in trace. 2019-03-27 01:46:54 +01:00
Bartosz Taudul
2e6ac050f4 Use custom vector swap. 2019-03-26 23:02:39 +01:00
Bartosz Taudul
6c5efbfdce Implement custom vector swap. 2019-03-26 23:02:32 +01:00
Bartosz Taudul
a632d9e2a3 Add zone vector cache.
Zone children will be now collected in staging vectors. When the zone is
ended (and no children can be added anymore to it), a size-fitted vector
is allocated using slab allocation. The over-allocated vector is then
put into cache for use in future zones.

This is only active for vectors <= 8192 elements, or 64 KB (chosen
arbitrarily), to reduce time spent on copying memory.

Overall, this change should have the following effects:
- System memory allocation pressure reduction, due to re-usage of
  vectors, which eliminates the need for constant growth.
- Reduction of memory usage, because children vectors are now fitted to
  required size.
- Slight increase of zone processing time, due to memory copying?
2019-03-26 22:06:00 +01:00
Bartosz Taudul
11f4dcbf1e Consistent variable naming. 2019-03-26 21:41:44 +01:00
Bartosz Taudul
52f76a45ed Display separators for bin counts in compare menu. 2019-03-26 20:27:28 +01:00
Bartosz Taudul
99fca9e069 Fix loading old traces when skipping locks. 2019-03-26 20:25:29 +01:00
Bartosz Taudul
fe675b91be Ditto for frame counts. 2019-03-26 20:19:56 +01:00
Bartosz Taudul
021368fb59 Display bin counts with separators. 2019-03-26 20:18:20 +01:00
Bartosz Taudul
df3e8597c4 Focusing timeline on crash from trace info window. 2019-03-24 23:55:38 +01:00
Bartosz Taudul
7792963e31 Interaction with crash label in options menu. 2019-03-24 23:52:36 +01:00
Bartosz Taudul
2f397c892b Middle click on crash label to center view on it. 2019-03-24 23:50:33 +01:00
Bartosz Taudul
1c495f077b Allow changing display order of threads. 2019-03-24 13:54:36 +01:00
Bartosz Taudul
f7eca24e18 Use ordered thread vector in message list. 2019-03-24 13:41:14 +01:00
Bartosz Taudul
a633c50991 Use ordered threads vector in options. 2019-03-24 13:41:02 +01:00
Bartosz Taudul
e957590350 Mirror thread data in a reorderable vector. 2019-03-24 13:37:43 +01:00
Bartosz Taudul
6ad820a76a Display tooltip for plot point over limits. 2019-03-23 02:24:45 +01:00
Bartosz Taudul
532bf19efa Don't draw many illegible plot points. 2019-03-22 20:11:24 +01:00
Bartosz Taudul
e6baee2bf9 Reduce number of max plot probes per column. 2019-03-22 20:11:10 +01:00
Bartosz Taudul
3ccb831efb Fix calculation of frame histogram data. 2019-03-21 21:30:08 +01:00
Bartosz Taudul
e79fa04a8b Don't fail when timer accuracy is low. 2019-03-21 21:24:07 +01:00
Bartosz Taudul
fa556d2d65 Use common access-and-insert pattern for VisData. 2019-03-19 22:12:24 +01:00
Bartosz Taudul
fddba168c6 Track next time to search for. 2019-03-18 19:39:37 +01:00
Bartosz Taudul
f530dfb0e9 Apply the same optimization for GPU zones. 2019-03-18 18:48:27 +01:00
Bartosz Taudul
94a1957338 Optimize zone skipping. 2019-03-18 18:42:58 +01:00
Bartosz Taudul
02db5f52d1 Pass nspx to zone drawing functions. 2019-03-18 18:40:03 +01:00
Bartosz Taudul
2931c83442 Lookup further at the beginning of the collapsed zones area. 2019-03-18 18:32:45 +01:00
Bartosz Taudul
e19f2f26e1 Optimize drawing collapsed CPU zones. 2019-03-18 18:24:27 +01:00
Bartosz Taudul
b5fce70f25 Fix rapid advancing to next frames. 2019-03-17 20:51:54 +01:00
Bartosz Taudul
e034eabeb8 Animate plot ranges. 2019-03-17 17:21:30 +01:00
Bartosz Taudul
b6ccb9d686 Allocation times may be displayed relative to zone start. 2019-03-17 16:53:09 +01:00
Bartosz Taudul
d2cca5dc3f Allow custom time offset in memory allocation list. 2019-03-17 16:47:44 +01:00
Bartosz Taudul
f0aadfe066 Don't push the same zone on zone info stack multiple times. 2019-03-17 16:43:20 +01:00
Bartosz Taudul
06421cf5ca Always auto-resize memory allocation info window. 2019-03-17 16:39:27 +01:00
Bartosz Taudul
4914ef6b14 Display zone messages in zone info window. 2019-03-17 16:33:18 +01:00
Bartosz Taudul
016f7ac4b6 Allow retrieval of zone's thread data. 2019-03-17 16:17:47 +01:00
Bartosz Taudul
b4bfdb7872 Dim information about no memory events. 2019-03-17 02:56:26 +01:00
Bartosz Taudul
17718b4d25 Fix asserts. 2019-03-16 20:36:06 +01:00
Bartosz Taudul
28dfa21fda Move conditional out of loop. 2019-03-16 14:46:21 +01:00
Bartosz Taudul
7e6a8135df Remove double indirection in GetNextLockEvent(). 2019-03-16 14:18:43 +01:00
Bartosz Taudul
6db1a9ccd4 Use lock thread ranges in lock tooltips. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
833151b868 Don't search for lock events outside of thread range. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
200621f952 Use lock ranges for early exclusion test. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
67f14be6aa Update lock ranges when loading trace. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
8ced8a457c Update thread time range on lock event insert. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
dc981550a1 Load lock event time to a variable. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
4d66317bc3 Add per-thread time ranges to lock maps. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
71e20e7e7f Store lock map as flat_hash_map with pointer values. 2019-03-16 02:50:51 +01:00
Bartosz Taudul
5fbc14c487 Fix skipping plots in version >= 0.4.5. 2019-03-15 15:27:37 +01:00
Bartosz Taudul
b43d962194 Set labels for input text fields. 2019-03-15 02:35:27 +01:00
Bartosz Taudul
6a36bb2fc2 Add hints to input text fields. 2019-03-15 01:31:06 +01:00
Bartosz Taudul
a10ec49a60 Don't use obsolete function. 2019-03-15 01:00:43 +01:00
Bartosz Taudul
5177629130 Add standard deviation explanation tooltips. 2019-03-14 01:34:50 +01:00
Bartosz Taudul
18e7b9df11 Add standard deviations to compare menu. 2019-03-14 01:32:50 +01:00
Bartosz Taudul
a0299cc63a Optimize calculation of standard deviation. 2019-03-14 01:23:37 +01:00
Bartosz Taudul
f57cac9042 Initialize SourceLocationZones in-place. 2019-03-14 01:15:19 +01:00
Bartosz Taudul
d3fdd6b1d1 Display standard deviation. 2019-03-14 01:14:06 +01:00
Bartosz Taudul
d64f07f853 Don't search for thread for empty timelines. 2019-03-14 01:10:57 +01:00
Bartosz Taudul
b7fe29f750 Offload timeline statistics update to a background thread. 2019-03-13 01:46:05 +01:00
Bartosz Taudul
9563c8316d Optimize lock drawing.
Don't iterate over locks that are present in only one thread, if only
contended lock events are to be displayed. Such locks cannot be
contended.
2019-03-09 14:20:34 +01:00
Bartosz Taudul
cbfd524b6c Set sane messages window column widths. 2019-03-09 00:37:58 +01:00
Bartosz Taudul
815d7fdcb4 Set sane callstack window column widths. 2019-03-09 00:34:04 +01:00
Bartosz Taudul
5445ffb149 Set sane statistics window column widths. 2019-03-09 00:30:53 +01:00
Bartosz Taudul
0748655797 Allow opening source file view from statistics menu. 2019-03-09 00:15:23 +01:00
Bartosz Taudul
761a08b055 Dim location in statistics menu. 2019-03-09 00:08:57 +01:00
Bartosz Taudul
9fd8a20d7c Use small checkbox in appropriate places. 2019-03-08 18:39:41 +01:00
Bartosz Taudul
e004dc85a9 Display waiting dots in "waiting for connection" window. 2019-03-07 17:00:40 +01:00
Bartosz Taudul
f69f9d4660 Disable window transparency. 2019-03-07 01:18:24 +01:00
Bartosz Taudul
535d7b2da1 Add waiting dots to statistics menu. 2019-03-07 00:59:43 +01:00
Bartosz Taudul
aa054f1f46 Add waiting dots to compare traces menu. 2019-03-07 00:59:02 +01:00
Bartosz Taudul
6e4bc7d9c5 Add waiting dots to memory data in zone info window. 2019-03-07 00:57:32 +01:00
Bartosz Taudul
d547700e50 Update time in a common location. 2019-03-07 00:57:25 +01:00
Bartosz Taudul
d0d7131e35 Properly restore threadMap.
This fixes thread ids returned by CompressThread in loaded traces. The
bug was manifesting by not displaying memory events in zone info window.
2019-03-07 00:49:25 +01:00
Bartosz Taudul
07bcca9dc0 Don't pre-fill threadExpand, if not needed. 2019-03-07 00:49:06 +01:00
Bartosz Taudul
f2f19241e6 Display waiting dots in find zone menu during precompute. 2019-03-06 18:25:39 +01:00
Bartosz Taudul
d5914d2e7b Extract drawing waiting dots. 2019-03-06 18:16:21 +01:00
Bartosz Taudul
cee625b375 Animate frame selection expansion. 2019-03-06 01:45:39 +01:00
Bartosz Taudul
4b1c0ff0c5 Fix frame selection when zoom anim is active. 2019-03-06 01:45:26 +01:00
Bartosz Taudul
00de21f7e7 Smooth zooming on mouse scroll. 2019-03-06 01:15:38 +01:00
Bartosz Taudul
bc87762012 Merge native callstack with the allocated one. 2019-03-05 19:44:08 +01:00
Bartosz Taudul
ebf09bebae Only one callstack may be in-flight at any time.
Save for the allocated callstack, but this will be solved in another
way. There's no need to keep pending callstacks in a map.
2019-03-05 19:44:08 +01:00
Bartosz Taudul
3e81e44d75 Separate processing for allocated callstacks.
Only native callstack is used for the moment.
2019-03-05 02:42:50 +01:00
Bartosz Taudul
e13286936c Mark templated functions inline. 2019-03-03 22:09:20 +01:00
Bartosz Taudul
f6913eecf0 Don't display custom stack frames as pointers. 2019-03-03 18:20:55 +01:00
Bartosz Taudul
dc74297439 Add missing const qualifiers. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
bef31ba073 Separate message for zone begin with alloc src loc and callstack. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
66b8a13e77 Store callstack alloc payloads. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
9fc022346b Replace frame pointers with callstack frame ids. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
664847211c Pack/unpack frame pointer to callstack frame id. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
1feedb17ac Add callstack frame identifier and the required plumbing. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
cf8d17c2ec Move VarArray hash calculation to a separate function. 2019-03-03 18:05:03 +01:00
Bartosz Taudul
fc63b6b07d Display trace version in trace info window. 2019-03-01 01:47:36 +01:00
Bartosz Taudul
6065d25335 Extend list of tracy callstack frames. 2019-03-01 01:41:10 +01:00
Bartosz Taudul
e284248995 Fix display of last message. 2019-03-01 01:30:56 +01:00
Bartosz Taudul
8fd09fe8f0 Get proper width. 2019-03-01 01:20:20 +01:00
Bartosz Taudul
42c94f7142 Handle discontinuous frame end mismatch failure. 2019-02-28 19:32:42 +01:00
Bartosz Taudul
d80dc82b96 Don't display invalid thread in failure dialog. 2019-02-28 19:31:45 +01:00
Bartosz Taudul
b4daad684c Display frame numbers in zone trace. 2019-02-27 21:12:56 +01:00
Bartosz Taudul
8d784f7fae Display inline frames in all call stacks. 2019-02-27 20:55:58 +01:00
Bartosz Taudul
422ed1f452 Special mode for callstack grouping in find zone menu. 2019-02-27 20:37:38 +01:00
Bartosz Taudul
851ae9077b Make small callstack button tooltip optional. 2019-02-27 19:59:49 +01:00
Bartosz Taudul
e20e7caab0 Increase size of frame left/right buttons. 2019-02-27 19:58:44 +01:00
Bartosz Taudul
e9aeb0c522 Darken timeline outside of capture area. 2019-02-24 18:35:03 +01:00
Bartosz Taudul
fb96d60256 Adjust last time in mem alloc/free and sys time messages. 2019-02-24 18:26:23 +01:00
Bartosz Taudul
9f621bf67f Improve lock label tooltips. 2019-02-24 17:44:44 +01:00
Bartosz Taudul
c78aedae62 Zoom-to-range for lock labels. 2019-02-24 17:30:58 +01:00
Bartosz Taudul
021d369b80 Fix calculation of thread lock extent. 2019-02-24 17:30:18 +01:00
Bartosz Taudul
271d7ccaa3 Bring plot tooltip up-to-par. 2019-02-24 17:01:46 +01:00
Bartosz Taudul
bf2ecbae36 Middle-click on thread label to zoom to thread extent. 2019-02-24 17:01:46 +01:00
Bartosz Taudul
62162d4cdb Display count of messages and locks in thread tooltip. 2019-02-24 17:01:46 +01:00
Bartosz Taudul
6dceec4ea8 Improve thread tooltip.
- In addition to the first event time, also display last one and the
  time period.
- Include messages and locks in thread events discovery.
2019-02-24 17:01:46 +01:00
Bartosz Taudul
a0b5ac33cc Always show label of a crashed thread. 2019-02-23 01:34:45 +01:00
Bartosz Taudul
af3eb93e4a Hide tracks that don't have anything to display. 2019-02-23 01:28:12 +01:00
Bartosz Taudul
7ab326c4fe Don't clip area above track. 2019-02-23 00:59:09 +01:00
Bartosz Taudul
53992b9b6b Don't hide hex thread id in tooltip. 2019-02-23 00:34:01 +01:00
Bartosz Taudul
29fcddca0b Display frame count in frame type selection dropdown. 2019-02-22 21:07:33 +01:00
Bartosz Taudul
ae53c8e6f0 Don't display threads with no messages. 2019-02-22 21:07:33 +01:00
Bartosz Taudul
48b5b25a6a Display count of messages in threads. 2019-02-22 21:07:33 +01:00
Bartosz Taudul
d0c1b9bf67 Proper formatting of plot values. 2019-02-21 23:07:32 +01:00
Bartosz Taudul
e190faa7e1 Save/load CPU usage plot. 2019-02-21 22:56:59 +01:00
Bartosz Taudul
e9baa80bf3 Process CPU usage reports. 2019-02-21 22:56:59 +01:00
Bartosz Taudul
f1dd4ef3d9 Animate thread position and height. 2019-02-21 21:18:41 +01:00
Bartosz Taudul
e945902f40 Merge visibility and show full options into one struct. 2019-02-21 20:24:08 +01:00
Bartosz Taudul
bc713463d8 Improve zooming animation. 2019-02-21 20:00:29 +01:00
Bartosz Taudul
3a562ae6c9 Fix display of unresolved call stack frames. 2019-02-19 16:37:34 +01:00
Bartosz Taudul
081b1069f6 Properly count number of locks in options menu. 2019-02-17 17:19:17 +01:00
Bartosz Taudul
9dd1d6a744 Don't display locks with no lock events. 2019-02-17 17:13:20 +01:00
Bartosz Taudul
a2819baa35 Split locks as single and multithreaded in options menu. 2019-02-17 17:06:39 +01:00
Bartosz Taudul
5cc738593f Fix drawing lock highlight. 2019-02-17 16:57:52 +01:00
Bartosz Taudul
92a7e02e73 Highlight locks hovered in the options menu. 2019-02-17 16:53:33 +01:00
Bartosz Taudul
bec27f7d60 Handle highlighting lock in fast-exit code path. 2019-02-17 16:49:18 +01:00
Bartosz Taudul
1e32821097 Move drawing lock header to a separate function. 2019-02-17 16:49:03 +01:00
Bartosz Taudul
ea4f4ebb3a Highlight selected/hovered lock. 2019-02-17 16:20:56 +01:00
Bartosz Taudul
4422fce55c Don't decompress GpuZone threads while saving trace.
Saving the threads compressed in GPU zones and memory event has the
following result on trace dump sizes:

043/aa.tracy (0.4.3) {10055 KB} -> 044/aa.tracy (0.4.4) {9975 KB}  99.20% size change
043/android.tracy (0.4.3) {542739 KB} -> 044/android.tracy (0.4.4) {519248 KB}  95.67% size change
043/asset-new.tracy (0.4.3) {78403 KB} -> 044/asset-new.tracy (0.4.4) {75899 KB}  96.81% size change
043/asset-new-id.tracy (0.4.3) {84341 KB} -> 044/asset-new-id.tracy (0.4.4) {81771 KB}  96.95% size change
043/asset-old.tracy (0.4.3) {80688 KB} -> 044/asset-old.tracy (0.4.4) {78410 KB}  97.18% size change
043/big.tracy (0.4.3) {939577 KB} -> 044/big.tracy (0.4.4) {938427 KB}  99.88% size change
043/callstack.tracy (0.4.3) {14557 KB} -> 044/callstack.tracy (0.4.4) {14465 KB}  99.37% size change
043/callstack-linux.tracy (0.4.3) {6949 KB} -> 044/callstack-linux.tracy (0.4.4) {6942 KB}  99.90% size change
043/crash.tracy (0.4.3) {131 KB} -> 044/crash.tracy (0.4.4) {127 KB}  97.10% size change
043/crash2.tracy (0.4.3) {1422 KB} -> 044/crash2.tracy (0.4.4) {1412 KB}  99.29% size change
043/darkrl.tracy (0.4.3) {15767 KB} -> 044/darkrl.tracy (0.4.4) {15663 KB}  99.34% size change
043/darkrl2.tracy (0.4.3) {7947 KB} -> 044/darkrl2.tracy (0.4.4) {7886 KB}  99.23% size change
043/darkrl-old.tracy (0.4.3) {67448 KB} -> 044/darkrl-old.tracy (0.4.4) {67004 KB}  99.34% size change
043/deadlock.tracy (0.4.3) {5984 KB} -> 044/deadlock.tracy (0.4.4) {5986 KB}  100.03% size change
043/gn-opengl.tracy (0.4.3) {29005 KB} -> 044/gn-opengl.tracy (0.4.4) {28885 KB}  99.59% size change
043/gn-vulkan.tracy (0.4.3) {29352 KB} -> 044/gn-vulkan.tracy (0.4.4) {29257 KB}  99.68% size change
043/long.tracy (0.4.3) {1182800 KB} -> 044/long.tracy (0.4.4) {1176584 KB}  99.47% size change
043/mem.tracy (0.4.3) {1369067 KB} -> 044/mem.tracy (0.4.4) {1262406 KB}  92.21% size change
043/multi.tracy (0.4.3) {8004 KB} -> 044/multi.tracy (0.4.4) {7944 KB}  99.24% size change
043/new.tracy (0.4.3) {1108 KB} -> 044/new.tracy (0.4.4) {1099 KB}  99.18% size change
043/q3bsp-mt.tracy (0.4.3) {949855 KB} -> 044/q3bsp-mt.tracy (0.4.4) {937574 KB}  98.71% size change
043/q3bsp-st.tracy (0.4.3) {240347 KB} -> 044/q3bsp-st.tracy (0.4.4) {230092 KB}  95.73% size change
043/selfprofile.tracy (0.4.3) {197708 KB} -> 044/selfprofile.tracy (0.4.4) {197659 KB}  99.98% size change
043/tbrowser.tracy (0.4.3) {9503 KB} -> 044/tbrowser.tracy (0.4.4) {9503 KB}  100.00% size change
043/test.tracy (0.4.3) {40700 KB} -> 044/test.tracy (0.4.4) {40699 KB}  100.00% size change
043/virtualfile_hc.tracy (0.4.3) {72424 KB} -> 044/virtualfile_hc.tracy (0.4.4) {72304 KB}  99.83% size change
043/zfile_hc.tracy (0.4.3) {39419 KB} -> 044/zfile_hc.tracy (0.4.4) {39328 KB}  99.77% size change
2019-02-17 00:29:01 +01:00
Bartosz Taudul
760e9105d0 Don't decompress memory thread data while saving trace. 2019-02-17 00:27:41 +01:00
Bartosz Taudul
9ee494c0f4 Store thread compression layout in trace dump. 2019-02-16 22:48:29 +01:00
Bartosz Taudul
d030674b83 Simplify loading memory events. 2019-02-16 22:32:14 +01:00
Bartosz Taudul
569a9fb9be Change order of file version checks during loading memory events. 2019-02-16 22:26:50 +01:00
Bartosz Taudul
88b7961421 Allocate memory for all zones at the current level at once. 2019-02-16 20:53:07 +01:00
Bartosz Taudul
470600fbc2 Don't thrash memory bandwith during file load. 2019-02-16 20:42:50 +01:00
Bartosz Taudul
c127f51767 Load time offsets to scratch buffers. 2019-02-15 02:46:25 +01:00
Bartosz Taudul
8fd685c877 Properly track memory usage in slab allocator. 2019-02-15 02:28:31 +01:00
Bartosz Taudul
23d12d2633 Allocate new block, if we're at the end of current one. 2019-02-15 02:04:37 +01:00
Bartosz Taudul
7b023e533d Use big allocation mode for Vector's reserve_exact. 2019-02-15 01:59:33 +01:00
Bartosz Taudul
930190f2cb Support big allocations in slab allocator. 2019-02-15 01:59:33 +01:00
Bartosz Taudul
1cefd4d8ac Don't use reserve_exact for temporary things. 2019-02-15 01:43:30 +01:00
Bartosz Taudul
127be8e995 GpuEvent doesn't need init. 2019-02-15 01:31:58 +01:00
Bartosz Taudul
e8d15e8295 Mirror zone child grouping for GPU zones. 2019-02-14 01:38:34 +01:00
Bartosz Taudul
e24ac42755 Add self time to GPU zone info window. 2019-02-14 01:31:06 +01:00
Bartosz Taudul
0fad23dbae Add GPU zone self time in tooltip. 2019-02-14 01:28:27 +01:00
Bartosz Taudul
f06609eb61 GPU child zones time getter. 2019-02-14 01:28:12 +01:00
Bartosz Taudul
92c1420c30 Improve handling of post-load background jobs.
Background tasks (source location zones sorting, reconstruction of
memory plot) are now started only after trace loading is finished.
Multithreaded sorting was previously impacting trace load times.

Only one thread is used to perform both jobs, one after another.
2019-02-14 01:17:37 +01:00
Bartosz Taudul
080873003b Simplify support for 0.2 traces. 2019-02-14 01:13:11 +01:00
Bartosz Taudul
bd1c1d044b Force inline read/write time offset functions. 2019-02-14 00:17:50 +01:00
Bartosz Taudul
631f81e9dc Use Vector to store children data instead of std::vector. 2019-02-13 02:32:25 +01:00
Bartosz Taudul
40d0c72982 Use memcpy and memset instead of per-element copy and zero. 2019-02-13 02:23:56 +01:00
Bartosz Taudul
d854998856 Support non-trivially-copyable items in Vector. 2019-02-13 02:20:31 +01:00
Bartosz Taudul
08642d034b Preserve string length in string map. 2019-02-12 22:11:15 +01:00
Bartosz Taudul
17e1894034 Add specialized string key for hash map. 2019-02-12 22:11:15 +01:00
Bartosz Taudul
ec37f59c14 Replace manual comparison with memcmp. 2019-02-12 22:11:15 +01:00
Bartosz Taudul
d32c070a9e Two more places where connection can silently drop. 2019-02-12 11:07:12 +01:00
Bartosz Taudul
7f11260bf0 Handle dropped connection during handshake. 2019-02-12 01:41:09 +01:00
Bartosz Taudul
147b31f014 Implement grouping children zones. 2019-02-10 17:21:01 +01:00
Bartosz Taudul
76186f3221 Allow zone name retrieval from source location. 2019-02-10 16:45:19 +01:00
Bartosz Taudul
740486a0ce Add children locations grouping button. 2019-02-10 16:14:13 +01:00
Bartosz Taudul
b7bd3696b7 Do not draw time subdividers on a nanosecond scale. 2019-02-10 16:04:04 +01:00
Bartosz Taudul
c7e64bb8a8 Replace select() with poll(). 2019-02-10 15:45:23 +01:00
Bartosz Taudul
d18c3432a4 Fix call stack window. 2019-02-10 13:38:14 +01:00
Bartosz Taudul
2d50664180 Use multiply instead of divide. 2019-02-10 13:01:16 +01:00
Bartosz Taudul
f1940aab2e Use help marker helper function. 2019-02-10 03:02:54 +01:00
Bartosz Taudul
96e38501b6 Use unformatted text drawing where possible. 2019-02-10 02:50:34 +01:00
Bartosz Taudul
3a8abdf9c1 Integer time specialization is not needed anymore. 2019-02-10 01:14:34 +01:00
Bartosz Taudul
2ad0258925 Don't print trailing zeros in fractions (e.g. 2.5 instead of 2.50). 2019-02-10 01:12:22 +01:00
Bartosz Taudul
af16872693 Don't display fractional part if it's 0. 2019-02-10 01:03:35 +01:00
Bartosz Taudul
e4f4fee6d4 Optimize printing days. 2019-02-10 01:02:57 +01:00
Bartosz Taudul
ee66b1354d IntTable10 is not needed. 2019-02-10 00:51:13 +01:00
Bartosz Taudul
d940e315bd Optimize TimeToString(). 2019-02-08 22:11:06 +01:00
Bartosz Taudul
3c4394489c Workaround GCC bug #67274.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67274
2019-02-08 11:54:29 +01:00
Bartosz Taudul
053932249c Style fixes. 2019-02-08 02:29:24 +01:00
Dedmen Miller (Dedmenmiller)
8fb6c0dfcb Merged in dedmenmiller/tracy/findZoneSorting (pull request #31)
Add sorting for findZone zonelist
2019-02-08 00:53:48 +00:00
Dedmen Miller
ab0dc0da11 Use memcpy 2019-02-07 16:10:28 +01:00
Dedmen Miller
59ae188a7f Cleanup 2019-02-07 14:51:34 +01:00
Dedmen Miller
7361d696c5 Return proper buf 2019-02-07 14:38:42 +01:00
Dedmen Miller
bfa5386bbe Cleanup 2019-02-07 14:36:33 +01:00
Dedmen Miller
e4ef491fdf Cleaner TimeToString 2019-02-07 13:14:52 +01:00
Dedmen Miller
92c872dfc0 Added sorting for findZone zonelist 2019-02-07 12:25:05 +01:00
Bartosz Taudul
0e6350d95e Grouping by function names is a more sane default. 2019-02-06 23:09:38 +01:00
Bartosz Taudul
b945f83169 Don't separate inclusive/exclusive counts.
There is no way for one frame to have both. Coloring is preserved and is
now determined by presence of children.
2019-02-06 22:36:21 +01:00
Bartosz Taudul
1953a1a1d5 Notify user about pitfalls of function name grouping. 2019-02-06 22:02:59 +01:00
Bartosz Taudul
70ea9e7712 Implement grouping call stack tree by function names. 2019-02-06 21:56:49 +01:00
Bartosz Taudul
044b7e1522 Add function name grouping controls. 2019-02-06 21:45:26 +01:00
Bartosz Taudul
7aa24864bf Make it easier to add new matches against tracy own stack frames. 2019-02-06 21:07:41 +01:00
Bartosz Taudul
104415ced8 Display base frame, not inline frame, if inlines are not shown. 2019-02-06 14:17:18 +01:00
Bartosz Taudul
c2e9c00a38 Add top-down call stack memory tree. 2019-02-06 13:53:14 +01:00
Bartosz Taudul
c689a494da Move call stack paths calculation to a separate function. 2019-02-06 13:46:50 +01:00
Bartosz Taudul
dbf8115771 Same for linux. 2019-02-04 02:33:03 +01:00
Bartosz Taudul
4dc05195ca Skip internal call stack capture inline frames for MSVC. 2019-02-04 02:27:13 +01:00
Bartosz Taudul
e801943b90 Array index is changing here. 2019-01-31 18:37:59 +01:00
Bartosz Taudul
b0d319890b Allow sorting find zone groups by mean time per call. 2019-01-30 01:54:18 +01:00
Bartosz Taudul
c5fd347401 Initialize variable. 2019-01-29 23:18:36 +01:00
Bartosz Taudul
89ddfd0006 Remove dead code. 2019-01-29 23:18:36 +01:00
Bartosz Taudul
852fe03cbc More references. 2019-01-29 22:10:14 +01:00
Bartosz Taudul
5e3390894d Use preincrementation for iterators. 2019-01-29 22:01:47 +01:00
Bartosz Taudul
d6c616848c Use reference instead of repeated deep dereferences. 2019-01-29 21:59:52 +01:00
Bartosz Taudul
1b3f10148d Fix logic snafu. 2019-01-29 21:46:14 +01:00
Bartosz Taudul
d86e36cc62 Fix progress of loading CPU zones. 2019-01-26 22:18:07 +01:00
Bartosz Taudul
39680ad315 Boost lock loading time. 2019-01-24 22:44:09 +01:00
Bartosz Taudul
66a5e06803 Allow disconnecting from a client. 2019-01-24 19:00:34 +01:00
Bartosz Taudul
922993cbbb Add placeholder worker disconnect command. 2019-01-24 18:51:55 +01:00
Dedmen Miller (Dedmenmiller)
e83e63caa4 Fix other lines 2019-01-24 15:02:36 +00:00
Dedmen Miller (Dedmenmiller)
72966a24a3 Fixed offset in histogram with non-log time 2019-01-24 14:16:23 +00:00
Bartosz Taudul
c67d91c6ac Display numerical thread id in thread tooltip. 2019-01-23 18:15:19 +01:00
Bartosz Taudul
71f1a0b31e Display self time percentage in find zone menu. 2019-01-23 18:11:47 +01:00
Bartosz Taudul
56b530e99c Fix tooltip active area. 2019-01-23 18:04:31 +01:00
Bartosz Taudul
7f015b1b24 Implement self time in find zone menu. 2019-01-23 14:25:45 +01:00
Bartosz Taudul
92766430d9 Add "self time" checkbox to find zone menu. 2019-01-23 14:25:28 +01:00
Bartosz Taudul
42af2d14cc Calculate self min and max times of source location zones. 2019-01-23 14:24:22 +01:00
Bartosz Taudul
118fab1561 Fast version of zone child time getter.
This one can only be used when all child zones are properly ended.
2019-01-23 13:59:14 +01:00
Bartosz Taudul
3d2cc2d54d Display zone self time. 2019-01-23 13:44:11 +01:00
Bartosz Taudul
06292f1a3f Add zone child time getter. 2019-01-23 13:39:44 +01:00
Bartosz Taudul
ef17699887 Fix order of inline and base subframes. 2019-01-21 17:12:01 +01:00
Bartosz Taudul
ddad475c19 Make it possible to store multiple frames at single frame address. 2019-01-20 19:11:48 +01:00
Bartosz Taudul
b9dc9f043c Make nohash operator() const. 2019-01-20 18:41:26 +01:00
Bartosz Taudul
d4e9baa0d9 Display time savings also as time percentage. 2019-01-20 03:16:32 +01:00
Rokas K. (rku)
31bbdfe2f2 Merged in rokups/tracy/mingw-support (pull request #26)
MingW support
2019-01-20 00:44:44 +00:00
Bartosz Taudul
f6edbccfc8 Fix triangle rendering. 2019-01-19 14:22:45 +01:00
Rokas Kupstys
8157e3a0b3 Fix builds with MingW. 2019-01-19 13:53:10 +02:00
Bartosz Taudul
92f3a4bba0 Add ZoneText and ZoneName to the C API. 2019-01-16 02:10:21 +01:00
Bartosz Taudul
49e270d8a6 Detect zone end without begin failure. 2019-01-16 00:45:48 +01:00
Bartosz Taudul
708fdfea49 Track memory alloc+free matching failures. 2019-01-15 18:56:26 +01:00
Bartosz Taudul
ecf9a299de Check for proper number of failure reasons. 2019-01-15 18:56:17 +01:00
Bartosz Taudul
76ab70a948 Simplify failure detection code. 2019-01-15 18:55:47 +01:00
Bartosz Taudul
3e3ee0ec2f There may be no source location associated with failure. 2019-01-15 18:54:41 +01:00
Bartosz Taudul
9944a73444 Store failure reason strings in Worker. 2019-01-15 18:42:15 +01:00
Bartosz Taudul
57decf5875 Display failure information. 2019-01-14 23:42:58 +01:00
Bartosz Taudul
ac6e7439e2 TODO: track memory allocation tracking failures. 2019-01-14 23:26:32 +01:00
Bartosz Taudul
c3246ca3b5 Gracefully store failure states. 2019-01-14 23:22:31 +01:00
Bartosz Taudul
4dc339c933 Close connection when zone validation fails. 2019-01-14 23:12:11 +01:00
Bartosz Taudul
c3b67e4482 Perform zone stack validation. 2019-01-14 23:08:34 +01:00
Bartosz Taudul
dcc6bee607 Process zone validation messages. 2019-01-14 22:56:10 +01:00
Bartosz Taudul
a5736a9c1b Change crash visuals in options menu. 2019-01-14 18:48:16 +01:00
Bartosz Taudul
da8b01357d Proper skipping of locks in 0.4.1+ (fixes compare menu). 2019-01-08 17:19:04 +01:00
Bartosz Taudul
cb50cf9de6 Last time is stored in worker. 2019-01-08 15:44:29 +01:00
Bartosz Taudul
9c6d037859 Another unneeded capture. 2019-01-06 21:15:49 +01:00
Bartosz Taudul
096022a718 Proper string printing. 2019-01-06 21:15:26 +01:00
Bartosz Taudul
d1beb12dc3 Remove unused variable. 2019-01-06 21:14:02 +01:00
Bartosz Taudul
13a0ddfe03 No need to perform capture here. 2019-01-06 21:11:36 +01:00
Bartosz Taudul
fbe8eb3585 Fix initialization of atomics. 2019-01-06 21:09:56 +01:00
Bartosz Taudul
6a1c552c61 Reduce zone loading time. 2019-01-06 20:49:37 +01:00
Bartosz Taudul
dabdf1360f Display trace loading time. 2019-01-06 19:20:17 +01:00
Bartosz Taudul
77c9a8c407 Add support for notification text in View. 2019-01-06 19:14:24 +01:00
Bartosz Taudul
980c54e349 Track trace loading time. 2019-01-06 19:09:50 +01:00
Bartosz Taudul
5ac26ce084 Init common Worker variables in header. 2019-01-06 19:04:50 +01:00
Bartosz Taudul
a313ed4720 Track separate time offset for GPU times.
This is second version of 0.4.2 dump file format. Previous 0.4.2 format
cannot be read anymore.

041/aa.tracy (0.4.1) {18987 KB} -> 042/aa.tracy (0.4.2) {10051 KB}  52.94% size change
041/android.tracy (0.4.1) {696753 KB} -> 042/android.tracy (0.4.2) {542738 KB}  77.90% size change
041/asset-new.tracy (0.4.1) {97163 KB} -> 042/asset-new.tracy (0.4.2) {78402 KB}  80.69% size change
041/asset-new-id.tracy (0.4.1) {105683 KB} -> 042/asset-new-id.tracy (0.4.2) {84341 KB}  79.81% size change
041/asset-old.tracy (0.4.1) {100205 KB} -> 042/asset-old.tracy (0.4.2) {80688 KB}  80.52% size change
041/big.tracy (0.4.1) {2246014 KB} -> 042/big.tracy (0.4.2) {939578 KB}  41.83% size change
041/crash.tracy (0.4.1) {143 KB} -> 042/crash.tracy (0.4.2) {131 KB}  91.37% size change
041/crash2.tracy (0.4.1) {3411 KB} -> 042/crash2.tracy (0.4.2) {1420 KB}  41.63% size change
041/darkrl.tracy (0.4.1) {31818 KB} -> 042/darkrl.tracy (0.4.2) {15762 KB}  49.54% size change
041/darkrl2.tracy (0.4.1) {18778 KB} -> 042/darkrl2.tracy (0.4.2) {7945 KB}  42.31% size change
041/darkrl-old.tracy (0.4.1) {151346 KB} -> 042/darkrl-old.tracy (0.4.2) {67449 KB}  44.57% size change
041/deadlock.tracy (0.4.1) {53 KB} -> 042/deadlock.tracy (0.4.2) {52 KB}  98.55% size change
041/gn-opengl.tracy (0.4.1) {45860 KB} -> 042/gn-opengl.tracy (0.4.2) {29005 KB}  63.25% size change
041/gn-vulkan.tracy (0.4.1) {45618 KB} -> 042/gn-vulkan.tracy (0.4.2) {29352 KB}  64.34% size change
041/long.tracy (0.4.1) {1583550 KB} -> 042/long.tracy (0.4.2) {1182800 KB}  74.69% size change
041/mem.tracy (0.4.1) {1243058 KB} -> 042/mem.tracy (0.4.2) {1369067 KB}  110.14% size change
041/multi.tracy (0.4.1) {14519 KB} -> 042/multi.tracy (0.4.2) {8000 KB}  55.10% size change
041/new.tracy (0.4.1) {1439 KB} -> 042/new.tracy (0.4.2) {1105 KB}  76.75% size change
041/q3bsp-mt.tracy (0.4.1) {1414323 KB} -> 042/q3bsp-mt.tracy (0.4.2) {949855 KB}  67.16% size change
041/q3bsp-st.tracy (0.4.1) {301334 KB} -> 042/q3bsp-st.tracy (0.4.2) {240347 KB}  79.76% size change
041/selfprofile.tracy (0.4.1) {399648 KB} -> 042/selfprofile.tracy (0.4.2) {197704 KB}  49.47% size change
041/tbrowser.tracy (0.4.1) {13052 KB} -> 042/tbrowser.tracy (0.4.2) {9503 KB}  72.81% size change
041/test.tracy (0.4.1) {60309 KB} -> 042/test.tracy (0.4.2) {40700 KB}  67.49% size change
041/virtualfile_hc.tracy (0.4.1) {108967 KB} -> 042/virtualfile_hc.tracy (0.4.2) {72424 KB}  66.46% size change
041/zfile_hc.tracy (0.4.1) {58814 KB} -> 042/zfile_hc.tracy (0.4.2) {39418 KB}  67.02% size change
2019-01-03 21:52:43 +01:00
Bartosz Taudul
f8ef5b726a Store time deltas, instead of absolute time in trace dumps.
This change greatly reduces the size of saved dumps, but increase the
cost of processing during loading. One notable outlier in the dataset
below is mem.tracy, which increased in size, even if changes in the
memory dump saving scheme decrease size of the other traces.

041/aa.tracy (0.4.1) {18987 KB} -> 042/aa.tracy (0.4.2) {10140 KB}  53.40% size change
041/android.tracy (0.4.1) {696753 KB} -> 042/android.tracy (0.4.2) {542738 KB}  77.90% size change
041/asset-new.tracy (0.4.1) {97163 KB} -> 042/asset-new.tracy (0.4.2) {78402 KB}  80.69% size change
041/asset-new-id.tracy (0.4.1) {105683 KB} -> 042/asset-new-id.tracy (0.4.2) {84341 KB}  79.81% size change
041/asset-old.tracy (0.4.1) {100205 KB} -> 042/asset-old.tracy (0.4.2) {80688 KB}  80.52% size change
041/big.tracy (0.4.1) {2246014 KB} -> 042/big.tracy (0.4.2) {943083 KB}  41.99% size change
041/crash.tracy (0.4.1) {143 KB} -> 042/crash.tracy (0.4.2) {131 KB}  91.39% size change
041/crash2.tracy (0.4.1) {3411 KB} -> 042/crash2.tracy (0.4.2) {1425 KB}  41.80% size change
041/darkrl.tracy (0.4.1) {31818 KB} -> 042/darkrl.tracy (0.4.2) {15897 KB}  49.96% size change
041/darkrl2.tracy (0.4.1) {18778 KB} -> 042/darkrl2.tracy (0.4.2) {8002 KB}  42.62% size change
041/darkrl-old.tracy (0.4.1) {151346 KB} -> 042/darkrl-old.tracy (0.4.2) {67945 KB}  44.89% size change
041/deadlock.tracy (0.4.1) {53 KB} -> 042/deadlock.tracy (0.4.2) {52 KB}  98.55% size change
041/gn-opengl.tracy (0.4.1) {45860 KB} -> 042/gn-opengl.tracy (0.4.2) {30983 KB}  67.56% size change
041/gn-vulkan.tracy (0.4.1) {45618 KB} -> 042/gn-vulkan.tracy (0.4.2) {31349 KB}  68.72% size change
041/long.tracy (0.4.1) {1583550 KB} -> 042/long.tracy (0.4.2) {1225316 KB}  77.38% size change
041/mem.tracy (0.4.1) {1243058 KB} -> 042/mem.tracy (0.4.2) {1369291 KB}  110.15% size change
041/multi.tracy (0.4.1) {14519 KB} -> 042/multi.tracy (0.4.2) {8110 KB}  55.86% size change
041/new.tracy (0.4.1) {1439 KB} -> 042/new.tracy (0.4.2) {1108 KB}  77.01% size change
041/q3bsp-mt.tracy (0.4.1) {1414323 KB} -> 042/q3bsp-mt.tracy (0.4.2) {949855 KB}  67.16% size change
041/q3bsp-st.tracy (0.4.1) {301334 KB} -> 042/q3bsp-st.tracy (0.4.2) {240347 KB}  79.76% size change
041/selfprofile.tracy (0.4.1) {399648 KB} -> 042/selfprofile.tracy (0.4.2) {197713 KB}  49.47% size change
041/tbrowser.tracy (0.4.1) {13052 KB} -> 042/tbrowser.tracy (0.4.2) {9503 KB}  72.81% size change
041/test.tracy (0.4.1) {60309 KB} -> 042/test.tracy (0.4.2) {40700 KB}  67.49% size change
041/virtualfile_hc.tracy (0.4.1) {108967 KB} -> 042/virtualfile_hc.tracy (0.4.2) {72839 KB}  66.85% size change
041/zfile_hc.tracy (0.4.1) {58814 KB} -> 042/zfile_hc.tracy (0.4.2) {39608 KB}  67.35% size change
2018-12-30 23:42:17 +01:00
Bartosz Taudul
ea396354d0 ^F opens find zone menu and focuses on the input box. 2018-12-22 17:39:22 +01:00
Bartosz Taudul
2d143ce516 Add support for handling keyboard shortcuts. 2018-12-22 17:36:20 +01:00
Bartosz Taudul
4bb4a568ca Move initialization of View values to header. 2018-12-22 17:22:26 +01:00
Bartosz Taudul
cd8d86edf3 Allow hiding "[unknown frames]" entries. 2018-12-21 21:10:29 +01:00
Bartosz Taudul
8c5670489c Freeing nullptr is valid. 2018-12-20 17:03:09 +01:00
Bartosz Taudul
407fb61a30 Display maximum number of waiting threads for a lock. 2018-12-19 18:34:53 +01:00
Bartosz Taudul
0f2b61cf24 Display wait and hold times of locks. 2018-12-19 18:28:48 +01:00
Bartosz Taudul
df1a125fc0 Mirror find zone menu changes in compare menu. 2018-12-18 16:56:19 +01:00
Bartosz Taudul
a220f38fbd Add support for matching source locations ignoring case. 2018-12-18 16:52:29 +01:00
Bartosz Taudul
acddcbd9bf Add case-ignoring string matcher. 2018-12-18 16:52:05 +01:00
Bartosz Taudul
24235406a0 Enter key in find zone menu acts the same as pressing "find". 2018-12-18 16:40:23 +01:00
Bartosz Taudul
7fc03736f2 Add "ignore case" toggle to find zone menu. 2018-12-18 16:38:55 +01:00
Bartosz Taudul
a740074da6 Color tweaks. 2018-12-18 16:30:13 +01:00
Bartosz Taudul
b60d5b892a Unify coloring of highlighted buttons. 2018-12-18 16:30:13 +01:00
Bartosz Taudul
c2485fbcb0 Add visual notification of an active toggle. 2018-12-18 16:30:13 +01:00
Bartosz Taudul
9e18db01c9 Menu bar buttons are now toggles. 2018-12-18 16:30:13 +01:00
Bartosz Taudul
79eb6a5836 Right click on lock in options to open info window. 2018-12-16 21:14:15 +01:00
Bartosz Taudul
9a7689c65d Display lock announce, terminate and life time. 2018-12-16 21:09:37 +01:00
Bartosz Taudul
7376ec65b0 Store lock announce and terminate time in trace dump. 2018-12-16 21:09:37 +01:00
Bartosz Taudul
9360df89b1 Store announce and terminate time of locks. 2018-12-16 21:07:26 +01:00
Bartosz Taudul
f42d52923a No-op processing of lock terminate events. 2018-12-16 20:46:33 +01:00
Bartosz Taudul
91171a6674 Draw zig-zag pattern over collapsed locks. 2018-12-16 20:20:27 +01:00
Bartosz Taudul
abad5574f3 Middle click on lock event to zoom to it. 2018-12-16 20:04:45 +01:00
Bartosz Taudul
8f6f54e412 Clicking on a lock event also opens lock info window. 2018-12-16 20:01:40 +01:00
Bartosz Taudul
444d5e20f0 Add basic lock info window. 2018-12-16 19:58:11 +01:00
Bartosz Taudul
ff8c9ab6dc Properly terminate source file data. 2018-12-16 19:48:34 +01:00
Bartosz Taudul
1235a5aa0a Allow discarding active trace. 2018-11-25 19:31:26 +01:00
Bartosz Taudul
fec0017bb6 Add third state (stopped) to the pause/resume button. 2018-11-25 19:15:16 +01:00
Bartosz Taudul
63f0dd72a5 Allow cancelling pending connection. 2018-10-23 19:49:57 +02:00
Bartosz Taudul
54baec9e7e Fix drawing last collapsed non-contiguous frame. 2018-10-21 17:46:24 +02:00
Bartosz Taudul
556b3e8efe Add "go to frame" functionality. 2018-10-21 17:36:27 +02:00
Bartosz Taudul
793e955480 Fix crash when loading a trace with unresolved strings.
Unresolved strings ("???") are not saved, but the internal string
pointers are saved. Resolving such string pointers caused a crash.
2018-10-21 16:38:20 +02:00
Bartosz Taudul
9342ba0e71 Don't track last frames in offline mode. 2018-10-21 16:03:21 +02:00
Bartosz Taudul
5280d6586b Switching active frame set by clicking on a frame. 2018-10-21 15:46:02 +02:00
Bartosz Taudul
5f92b08b0d Bump version to 0.4.0. 2018-10-09 19:29:06 +02:00
Bartosz Taudul
05c9325018 Highlight zones selected in the find zone menu. 2018-10-09 15:54:28 +02:00
Bartosz Taudul
4ca4c85976 Fix an edge case in zone drawing.
If the last zone on a track was not ended, and in the view's past
(beyond the left edge of the view) it was still included in calculation
of track height.
2018-10-06 12:58:38 +02:00
Bartosz Taudul
75ab9147d0 Reduce amount of information in "menu" bar.
Zone count, queue delay and timer resolution were moved to the trace
information window.

Time span and View span are now displayed as icons.
2018-10-05 23:02:23 +02:00
Bartosz Taudul
9e94dcd320 Fix zoom-to-allocation not working on selected allocations. 2018-10-05 21:13:31 +02:00
Bartosz Taudul
1a8b184d10 Mute inactive frame sets. 2018-10-05 21:10:37 +02:00
Bartosz Taudul
286a6cfe0a Move check out of loop. 2018-10-05 21:03:04 +02:00