1
0
mirror of https://github.com/wolfpld/tracy synced 2025-05-01 13:13:53 +00:00

Preload next block size.

This commit is contained in:
Bartosz Taudul 2020-02-13 15:17:07 +01:00
parent 232379c72c
commit 4d892cbae9

View File

@ -288,16 +288,26 @@ private:
} }
m_dataOffset = sizeof( hdr ); m_dataOffset = sizeof( hdr );
ReadBlock(); ReadBlock( ReadBlockSize() );
std::swap( m_buf, m_second ); std::swap( m_buf, m_second );
m_decThread = std::thread( [this] { Worker(); } ); m_decThread = std::thread( [this] { Worker(); } );
} }
tracy_force_inline uint32_t ReadBlockSize()
{
uint32_t sz;
memcpy( &sz, m_data + m_dataOffset, sizeof( sz ) );
m_dataOffset += sizeof( sz );
return sz;
}
void Worker() void Worker()
{ {
uint32_t blockSz = ReadBlockSize();
for(;;) for(;;)
{ {
ReadBlock(); ReadBlock( blockSz );
if( m_lastBlock == BufSize ) blockSz = ReadBlockSize();
for(;;) for(;;)
{ {
if( m_exit.load( std::memory_order_relaxed ) == true ) return; if( m_exit.load( std::memory_order_relaxed ) == true ) return;
@ -355,14 +365,10 @@ private:
} }
} }
void ReadBlock() void ReadBlock( uint32_t sz )
{ {
if( m_dataOffset < m_dataSize ) if( m_dataOffset < m_dataSize )
{ {
uint32_t sz;
memcpy( &sz, m_data + m_dataOffset, sizeof( sz ) );
m_dataOffset += sizeof( sz );
if( m_stream ) if( m_stream )
{ {
m_lastBlock = (size_t)LZ4_decompress_safe_continue( m_stream, m_data + m_dataOffset, m_second, sz, BufSize ); m_lastBlock = (size_t)LZ4_decompress_safe_continue( m_stream, m_data + m_dataOffset, m_second, sz, BufSize );