...
Note: for consistency, please take all measurements on rc20 and be sure to compile with DEBUG=no
.
...
Nov 16,
...
2016
No Format |
---|
|
atomicIntCmpX 6.21ns25ns Atomic<int>::compareExchange
atomicIntInc 5.98ns90ns Atomic<int>::inc
atomicIntLoad
atomicIntInc 05.56ns94ns Atomic<int>::load atomicIntStore std::atomic<int>::fetch_add
atomicIntLoad 0.56ns Atomic<int>::store atomicIntXchg 0.59ns 5.97ns Atomic<int>::exchangeload
bMutexNoBlockatomicIntStore 14.77ns std::mutex lock/unlock (no blocking)
bufferBasic 0.57ns Atomic<int>::store
atomicIntXchg 11.42ns buffer create, add one chunk, delete bufferBasicAlloc5.90ns 14.62ns Atomic<int>::exchange
bufferbMutexNoBlock create, alloc block in chunk, delete bufferBasicCopy 1314.24ns57ns buffer create, copy small block, delete
bufferCopy std::mutex lock/unlock (no blocking)
bufferAppendCopy1 147.76ns99ns copy out 2 small chunks fromappendCopy 1 bufferbyte bufferExtendChunkto a buffer
bufferAppendCopy50 5.69ns buffer add onto existing8.93ns chunk bufferGetStart appendCopy 50 3.34nsbytes to a buffer
Buffer::getStartbufferAppendCopy100 bufferIterator 228.57ns47ns iterate over buffer withappendCopy 5100 chunksbytes condPingPongto a buffer
bufferAppendCopy250 416.04us74ns std::condition_variable round-trip cppAtomicExchg appendCopy 250 bytes to a buffer
5.87nsbufferAppendCopy500 Exchange method on a C++ atomic_int
cppAtomicLoad 20.90ns appendCopy 500 13.50nsbytes to a buffer
ReadbufferAppendExternal1 a C++ atomic_int cyclesToSeconds 8.13ns 6.97ns Convert aappendExternal rdtsc1 resultbyte to (double)a secondsbuffer
cyclesToNanosbufferAppendExternal50 8.15ns 9.75ns Convert aappendExternal rdtsc50 resultbytes to (uint64_t) nanoseconds
dispatchPolla buffer
bufferAppendExternal100 7.84ns 8.63ns appendExternal Dispatch::poll (no timers or pollers)
div32100 bytes to a buffer
bufferAppendExternal250 7.76ns appendExternal 250 bytes to 4.86nsa buffer
bufferAppendExternal500 32-bit integer division instruction8.25ns div64 appendExternal 500 bytes to a buffer
bufferBasic 20.30ns 64-bit integer division instruction functionCall 10.88ns 1.95ns buffer Callcreate, aadd functionone thatchunk, hasdelete
notbufferBasicAlloc been inlined getThreadId 12.29ns 2.24ns Retrieve threadbuffer idcreate, via ThreadId::get
hashTableLookup alloc block in chunk, delete
bufferBasicCopy 128.86ns Key lookup in a 1GB HashTable12.02ns hashTableLookupPf 78.07ns buffer Keycreate, lookupcopy insmall ablock, 1GBdelete
HashTablebufferCopy with prefetching lfence 14.25ns 2.82ns Lfence instruction lockInDispThrdcopy out 2 small chunks from buffer
bufferExtendChunk 4.06ns Acquire/release Dispatch::Lock (in dispatch thread) lockNonDispThrd4.69ns 214.54ns buffer Acquire/release Dispatch::Lock (non-dispatch thread)
memcpy100add onto existing chunk
bufferGetStart 83.78ns41ns Copy 100 bytes with memcpy memcpy1000Buffer::getStart
bufferConstruct 37.37ns 5.90ns Copy 1000 bytes with memcpy memcpy10000 buffer stack allocation
bufferReset 191.07ns Copy 10000 bytes with memcpy murmur3 4.79ns Buffer::reset
bufferCopyIterator2 10.31ns 128-bit MurmurHash3 (64-bit optimised) on 1 byte of data
murmur3 6.46ns buffer iterate over 2 copied chunks, accessing 1 byte each
bufferCopyIterator5 40.47ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of data
objectPoolAlloc 27.86ns Cost of new allocations from an ObjectPool (no destroys)
objectPoolRealloc 8.71ns buffer iterate over 5 copied chunks, accessing 1 byte each
bufferExternalIterator2 8.96ns 4.65nsbuffer iterate over 2 Costexternal ofchunks, ObjectPoolaccessing allocation1 afterbyte destroyingeach
anbufferExternalIterator5 object prefetch 23.46ns buffer iterate over 34.72ns5 external chunks, accessing Prefetch1 instructionbyte rdtsceach
condPingPong 63.70ns09us Read the fine-grain cycle counter
segmentEntrySort std::condition_variable round-trip
cppAtomicExchg 7.02ms Sort a Segment full of avg6.64ns 100-byte Objects by age segmentIterator Exchange method on a 1.83ms C++ atomic_int
cppAtomicLoad Iterate a Segment full of avg. 100-byte Objects sfence 0.60ns Read a C++ 1.39nsatomic_int
cyclesToSeconds Sfence instruction spinLock 6.30ns 16.17ns Convert a Acquire/releaserdtsc SpinLockresult startStopTimerto (double) seconds
cyclesToNanos 14.76ns Start and stop a Dispatch::Timer spawnThread 6.32ns Convert a 9.89usrdtsc result to (uint64_t) Startnanoseconds
anddispatchPoll stop a thread throwInt 9.36ns 1.91us Throw an int
throwIntNL Dispatch::poll (no timers or pollers)
div32 2.60us Throw an int in a function call throwException 4.79ns 1.84us 32-bit integer division Throwinstruction
andiv64 Exception throwExceptionNL 2.58us Throw an Exception in a function call throwSwitch 20.22ns 5.46us Throw an Exception using ClientException::throwException
vectorPushPop64-bit integer division instruction
functionCall 3.72ns1.74ns Push and popCall a std::vector |
June 18, 2012
No Format |
---|
atomicIntCmpX function that has not been inlined
generateRandomNumber 6.29ns Atomic<int>::compareExchange
atomicIntInc17.21ns Call to randomNumberGenerator(x)
genRandomString 5.93ns Atomic<int>::inc atomicIntLoad 1.49us 0.56ns Atomic<int>::load atomicIntStore Generate a random 100-byte value
getThreadId 0.59ns Atomic<int>::store atomicIntXchg 51.93ns73ns Atomic<int>::exchange bMutexNoBlock Retrieve thread id via 14.92nsThreadId::get
getThreadIdSyscall std::mutex lock/unlock (no blocking) cppAtomicExchg 41.04ns 5.93ns Retrieve kernel thread Exchangeid methodusing onsyscall
ahashTableLookup C++ atomic_int cppAtomicLoad 123.41ns 13.76ns Read a C++ atomic_int cyclesToSecondsKey lookup in a 1GB HashTable
hashTableLookupPf 7.04ns Convert a rdtsc result to (double) seconds
cyclesToNanos70.57ns Key lookup in a 9.86ns1GB HashTable with prefetching
Convertlfence a rdtsc result to (uint64_t) nanoseconds dispatchPoll 8.17ns Dispatch::poll (no timers or pollers)
functionCall3.00ns Lfence instruction
lockInDispThrd 1.98ns Call a function that has not3.52ns been inlined getThreadId Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 1.98ns Retrieve thread id via ThreadId::get hashTableLookup 324.23ns 168.76ns Key lookup in a 1GB HashTable
hashTableLookupPfAcquire/release Dispatch::Lock (non-dispatch thread)
mapCreate 143.19ns Key lookup in a 1GB HashTable with prefetching lfence21.15ns Create+delete entry in std::map
mapLookup 2.90ns Lfence instruction lockInDispThrd 14.87ns 4.15ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd Lookup in std::map<uint64_t, uint64_t>
memcpyCached100 4.05ns Acquire/release Dispatch::Lock (non-dispatch thread)
murmur314.52ns memcpy 100 bytes with hot/fixed dst and src
memcpyCached1000 11.29ns 128-bit MurmurHash3 (64-bit optimised) on 121.79ns byte of data murmur3 memcpy 1000 bytes with hot/fixed dst and src
memcpyCached10000 41.17ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of data
objectPoolAlloc 192.56ns Cost of new allocations from an ObjectPool (no destroys)
objectPoolRealloc 4.42ns Cost of ObjectPool allocation after destroying an object
prefetch 185.40ns memcpy 10000 bytes with hot/fixed dst and src
memcpyCachedDst100 93.36ns memcpy 100 bytes with hot/fixed dst and cold src
memcpyCachedDst1000 29122.79ns05ns Prefetch instruction rdtsc memcpy 1000 bytes with hot/fixed dst and cold src
memcpyCachedDst10000 6356.80ns61ns Read the fine-grain cycle counter segmentEntrySortmemcpy 10000 bytes with hot/fixed dst and 5.18mscold src
memcpyCold100 Sort a Segment full of avg. 100-byte Objects by age segmentIterator 377.18ns 1.08ms memcpy 100 Iteratebytes awith Segmentcold fulldst ofand avg. 100-byte Objects
sfencesrc
memcpyCold1000 659.35ns 1.47ns memcpy 1000 Sfencebytes instructionwith spinLockcold dst and src
memcpyCold10000 16.34ns 3.18us Acquire/release SpinLock startStopTimer memcpy 10000 15.03nsbytes with cold dst Startand andsrc
stopmurmur3 a Dispatch::Timer throwInt 1.97us 10.96ns Throw an int throwIntNL 128-bit MurmurHash3 (64-bit optimised) on 1 byte of data
2.44usmurmur3 Throw an int in a function call throwException 150.88us44ns Throw an Exception throwExceptionNL 128-bit MurmurHash3 hash (64-bit optimised) 2.60uson 256 bytes of Throwdata
anobjectPoolAlloc Exception in a function call throwSwitch 29.52ns 5.09us Throw Cost of new allocations from an Exception using ClientException::throwException
vectorPushPopObjectPool (no destroys)
objectPoolRealloc 34.86ns57ns Push and pop a std::vector
|
July 18, 2011
No Format |
---|
atomicIntCmpX 6.26ns AtomicInt::compareExchange
atomicIntIncCost of ObjectPool allocation after destroying an object
pingConditionVar 6.05ns AtomicInt::inc
atomicIntLoad 1.61us 0.57ns AtomicInt::load
atomicIntStore 0.58ns Round-trip ping with std::condition_variable
prefetch AtomicInt::store atomicIntXchg 6.06ns AtomicInt::exchange bMutexNoBlock 1435.66ns85ns Boost mutex lock/unlock (no blocking) cppAtomicExchg Prefetch instruction
5.93nsqueueEstimator Exchange method on a C++ atomic_int cppAtomicLoad 132.66ns23ns Read a C++ atomic_int dispatchPoll Recompute # bytes 7.62nsoutstanding in queue
rdtsc Dispatch::poll (no timers or pollers) getThreadId 2.27ns Retrieve thread id via ThreadId::get lfence 6.74ns 2.84nsRead the fine-grain cycle Lfencecounter
instructionsegmentEntrySort lockInDispThrd 7.05ns Acquire/release Dispatch::Lock (in dispatch thread)8.38ms lockNonDispThrd 252.79ns Acquire/release Dispatch::Lock (non-dispatch thread) sfenceSort a Segment full of avg. 100-byte Objects by age
segmentIterator 1.50ns Sfence instruction spinLock2.09ms 16.46nsIterate a Segment Acquire/releasefull SpinLock
|
Misc
Some 2.3GHz Xeon, 2011-08-23
No Format |
---|
atomicIntCmpX 10.63ns AtomicInt::compareExchange
atomicIntIncof avg. 100-byte Objects
sessionRefCount 812.71ns59ns AtomicInt::inc atomicIntLoad 0.44ns Create/delete SessionRef
serialize AtomicInt::load atomicIntStore 0.43ns AtomicInt::store
atomicIntXchg 755.83ns41ns AtomicInt::exchange bMutexNoBlock cpuid 42.26nsinstruction for serialize
Boostsfence mutex lock/unlock (no blocking) cppAtomicExchg 7.97ns Exchange method on a C++ atomic_int cppAtomicLoad 71.69ns41ns Read a C++ atomic_int cyclesToSeconds Sfence 10.42nsinstruction
spinLock Convert a rdtsc result to (double) seconds cyclesToNanos 14.49ns Convert a rdtsc result to (uint64_t) nanoseconds
dispatchPoll9.60ns Acquire/release SpinLock
20.41nsstartStopTimer Dispatch::poll (no timers or pollers) functionCall 333.05ns43ns Call a function that hasStart notand beenstop inlined
getThreadId a Dispatch::Timer
spawnThread 3.04ns Retrieve thread id via ThreadId::get lfence 8.89us 4.79ns Start and stop Lfencea instructionthread
lockInDispThrdthrowInt 6.10ns Acquire/release Dispatch::Lock (in dispatch thread) lockNonDispThrd 283.43ns Acquire/release Dispatch::Lock (non-dispatch thread) sfence2.07us Throw an 3.60nsint
throwIntNL Sfence instruction spinLock 25.17ns Acquire/release SpinLock
throwInt 2.55us 3.32us Throw an int throwIntNLin a function call
throwException 4.54us Throw an int in a function2.03us call throwException 3.43us Throw an Exception
throwExceptionNL 4.69us 2.81us Throw an Exception in a function call
throwSwitch 6.45us04us Throw an Exception using ClientException::throwException
timeTrace 7.56ns Record an event using TimeTrace
unorderedMapCreate 79.05ns Create+delete entry in unordered_map
unorderedMapLookup 14.62ns Lookup in std::unordered_map<uint64_t, uint64_t>
vectorPushPop 3.90ns Push and pop a std::vector |
June 21, 2016
No Format |
---|
|
atomicIntCmpX 6.23ns Atomic<int>::compareExchange
atomicIntInc 5.85ns Atomic<int>::inc
atomicIntInc 5.84ns std::atomic<int>::fetch_add
atomicIntLoad 0.56ns Atomic<int>::load
atomicIntStore 0.56ns Atomic<int>::store
atomicIntXchg 5.84ns Atomic<int>::exchange
bMutexNoBlock 14.46ns std::mutex lock/unlock (no blocking)
bufferAppendCopy1 8.09ns appendCopy 1 byte to a buffer
bufferAppendCopy50 8.96ns appendCopy 50 bytes to a buffer
bufferAppendCopy100 9.09ns appendCopy 100 bytes to a buffer
bufferAppendCopy250 18.08ns appendCopy 250 bytes to a buffer
bufferAppendCopy500 22.56ns appendCopy 500 bytes to a buffer
bufferAppendExternal1 8.24ns appendExternal 1 byte to a buffer
bufferAppendExternal50 7.87ns appendExternal 50 bytes to a buffer
bufferAppendExternal100 7.95ns appendExternal 100 bytes to a buffer
bufferAppendExternal250 7.79ns appendExternal 250 bytes to a buffer
bufferAppendExternal500 7.72ns appendExternal 500 bytes to a buffer
bufferBasic 11.13ns buffer create, add one chunk, delete
bufferBasicAlloc 11.99ns buffer create, alloc block in chunk, delete
bufferBasicCopy 12.00ns buffer create, copy small block, delete
bufferCopy 14.20ns copy out 2 small chunks from buffer
bufferExtendChunk 4.56ns buffer add onto existing chunk
bufferGetStart 3.34ns Buffer::getStart
bufferConstruct 5.84ns buffer stack allocation
bufferReset 4.72ns Buffer::reset
bufferCopyIterator2 6.67ns buffer iterate over 2 copied chunks, accessing 1 byte each
bufferCopyIterator5 9.18ns buffer iterate over 5 copied chunks, accessing 1 byte each
bufferExternalIterator2 9.06ns buffer iterate over 2 external chunks, accessing 1 byte each
bufferExternalIterator5 23.24ns buffer iterate over 5 external chunks, accessing 1 byte each
condPingPong 2.98us std::condition_variable round-trip
cppAtomicExchg 5.83ns Exchange method on a C++ atomic_int
cppAtomicLoad 0.65ns Read a C++ atomic_int
cyclesToSeconds 6.13ns Convert a rdtsc result to (double) seconds
cyclesToNanos 6.35ns Convert a rdtsc result to (uint64_t) nanoseconds
dispatchPoll 9.21ns Dispatch::poll (no timers or pollers)
div32 4.72ns 32-bit integer division instruction
div64 20.15ns 64-bit integer division instruction
functionCall 1.67ns Call a function that has not been inlined
generateRandomNumber 16.56ns Call to randomNumberGenerator(x)
genRandomString 1.49us Generate a random 100-byte value
getThreadId 1.95ns Retrieve thread id via ThreadId::get
getThreadIdSyscall 41.15ns Retrieve kernel thread id using syscall
hashTableLookup 124.09ns Key lookup in a 1GB HashTable
hashTableLookupPf 73.98ns Key lookup in a 1GB HashTable with prefetching
lfence 2.92ns Lfence instruction
lockInDispThrd 2.79ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 279.30ns Acquire/release Dispatch::Lock (non-dispatch thread)
mapCreate 22.63ns Create+delete entry in std::map
mapLookup 16.02ns Lookup in std::map<uint64_t, uint64_t>
memcpyCached100 14.55ns memcpy 100 bytes with hot/fixed dst and src
memcpyCached1000 21.82ns memcpy 1000 bytes with hot/fixed dst and src
memcpyCached10000 185.16ns memcpy 10000 bytes with hot/fixed dst and src
memcpyCachedDst100 93.82ns memcpy 100 bytes with hot/fixed dst and cold src
memcpyCachedDst1000 122.30ns memcpy 1000 bytes with hot/fixed dst and cold src
memcpyCachedDst10000 355.23ns memcpy 10000 bytes with hot/fixed dst and cold src
memcpyCold100 372.20ns memcpy 100 bytes with cold dst and src
memcpyCold1000 655.00ns memcpy 1000 bytes with cold dst and src
memcpyCold10000 3.18us memcpy 10000 bytes with cold dst and src
murmur3 10.28ns 128-bit MurmurHash3 (64-bit optimised) on 1 byte of data
murmur3 49.72ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of data
objectPoolAlloc 29.16ns Cost of new allocations from an ObjectPool (no destroys)
objectPoolRealloc 4.48ns Cost of ObjectPool allocation after destroying an object
pingConditionVar 1.56us Round-trip ping with std::condition_variable
prefetch 35.20ns Prefetch instruction
rdtsc 6.67ns Read the fine-grain cycle counter
segmentEntrySort 8.14ms Sort a Segment full of avg. 100-byte Objects by age
segmentIterator 1.97ms Iterate a Segment full of avg. 100-byte Objects
sessionRefCount 12.55ns Create/delete SessionRef
serialize 55.34ns cpuid instruction for serialize
sfence 1.39ns Sfence instruction
spinLock 18.90ns Acquire/release SpinLock
startStopTimer 56.46ns Start and stop a Dispatch::Timer
spawnThread 8.90us Start and stop a thread
throwInt 2.02us Throw an int
throwIntNL 2.48us Throw an int in a function call
throwException 1.97us Throw an Exception
throwExceptionNL 2.78us Throw an Exception in a function call
throwSwitch 6.05us Throw an Exception using ClientException::throwException
timeTrace 15.93ns Record an event using TimeTrace
unorderedMapCreate 72.63ns Create+delete entry in unordered_map
unorderedMapLookup 13.07ns Lookup in std::unordered_map<uint64_t, uint64_t>
vectorPushPop 3.80ns Push and pop a std::vector |
June 9, 2014
No Format |
---|
atomicIntCmpX 6.21ns Atomic<int>::compareExchange
atomicIntInc 5.98ns Atomic<int>::inc
atomicIntLoad 0.56ns Atomic<int>::load
atomicIntStore 0.56ns Atomic<int>::store
atomicIntXchg 5.97ns Atomic<int>::exchange
bMutexNoBlock 14.77ns std::mutex lock/unlock (no blocking)
bufferBasic 11.42ns buffer create, add one chunk, delete
bufferBasicAlloc 14.62ns buffer create, alloc block in chunk, delete
bufferBasicCopy 13.24ns buffer create, copy small block, delete
bufferCopy 14.76ns copy out 2 small chunks from buffer
bufferExtendChunk 5.69ns buffer add onto existing chunk
bufferGetStart 3.34ns Buffer::getStart
bufferIterator 22.57ns iterate over buffer with 5 chunks
condPingPong 4.04us std::condition_variable round-trip
cppAtomicExchg 5.87ns Exchange method on a C++ atomic_int
cppAtomicLoad 13.50ns Read a C++ atomic_int
cyclesToSeconds 6.97ns Convert a rdtsc result to (double) seconds
cyclesToNanos 9.75ns Convert a rdtsc result to (uint64_t) nanoseconds
dispatchPoll 8.63ns Dispatch::poll (no timers or pollers)
div32 4.86ns 32-bit integer division instruction
div64 20.30ns 64-bit integer division instruction
functionCall 1.95ns Call a function that has not been inlined
getThreadId 2.24ns Retrieve thread id via ThreadId::get
hashTableLookup 128.86ns Key lookup in a 1GB HashTable
hashTableLookupPf 78.07ns Key lookup in a 1GB HashTable with prefetching
lfence 2.82ns Lfence instruction
lockInDispThrd 4.06ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 214.54ns Acquire/release Dispatch::Lock (non-dispatch thread)
memcpy100 8.78ns Copy 100 bytes with memcpy
memcpy1000 37.37ns Copy 1000 bytes with memcpy
memcpy10000 191.07ns Copy 10000 bytes with memcpy
murmur3 10.31ns 128-bit MurmurHash3 (64-bit optimised) on 1 byte of data
murmur3 40.47ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of data
objectPoolAlloc 27.86ns Cost of new allocations from an ObjectPool (no destroys)
objectPoolRealloc 4.65ns Cost of ObjectPool allocation after destroying an object
prefetch 34.72ns Prefetch instruction
rdtsc 6.70ns Read the fine-grain cycle counter
segmentEntrySort 7.02ms Sort a Segment full of avg. 100-byte Objects by age
segmentIterator 1.83ms Iterate a Segment full of avg. 100-byte Objects
sfence 1.39ns Sfence instruction
spinLock 16.17ns Acquire/release SpinLock
startStopTimer 14.76ns Start and stop a Dispatch::Timer
spawnThread 9.89us Start and stop a thread
throwInt 1.91us Throw an int
throwIntNL 2.60us Throw an int in a function call
throwException 1.84us Throw an Exception
throwExceptionNL 2.58us Throw an Exception in a function call
throwSwitch 5.46us Throw an Exception using ClientException::throwException
vectorPushPop 3.72ns Push and pop a std::vector |
June 18, 2012
No Format |
---|
atomicIntCmpX 6.29ns Atomic<int>::compareExchange
atomicIntInc 5.93ns Atomic<int>::inc
atomicIntLoad 0.56ns Atomic<int>::load
atomicIntStore 0.59ns Atomic<int>::store
atomicIntXchg 5.93ns Atomic<int>::exchange
bMutexNoBlock 14.92ns std::mutex lock/unlock (no blocking)
cppAtomicExchg 5.93ns Exchange method on a C++ atomic_int
cppAtomicLoad 13.76ns Read a C++ atomic_int
cyclesToSeconds 7.04ns Convert a rdtsc result to (double) seconds
cyclesToNanos 9.86ns Convert a rdtsc result to (uint64_t) nanoseconds
dispatchPoll 8.17ns Dispatch::poll (no timers or pollers)
functionCall 1.98ns Call a function that has not been inlined
getThreadId 1.98ns Retrieve thread id via ThreadId::get
hashTableLookup 168.76ns Key lookup in a 1GB HashTable
hashTableLookupPf 143.19ns Key lookup in a 1GB HashTable with prefetching
lfence 2.90ns Lfence instruction
lockInDispThrd 4.15ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 4.05ns Acquire/release Dispatch::Lock (non-dispatch thread)
murmur3 11.29ns 128-bit MurmurHash3 (64-bit optimised) on 1 byte of data
murmur3 41.17ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of data
objectPoolAlloc 192.56ns Cost of new allocations from an ObjectPool (no destroys)
objectPoolRealloc 4.42ns Cost of ObjectPool allocation after destroying an object
prefetch 29.79ns Prefetch instruction
rdtsc 6.80ns Read the fine-grain cycle counter
segmentEntrySort 5.18ms Sort a Segment full of avg. 100-byte Objects by age
segmentIterator 1.08ms Iterate a Segment full of avg. 100-byte Objects
sfence 1.47ns Sfence instruction
spinLock 16.34ns Acquire/release SpinLock
startStopTimer 15.03ns Start and stop a Dispatch::Timer
throwInt 1.97us Throw an int
throwIntNL 2.44us Throw an int in a function call
throwException 1.88us Throw an Exception
throwExceptionNL 2.60us Throw an Exception in a function call
throwSwitch 5.09us Throw an Exception using ClientException::throwException
vectorPushPop 3.86ns Push and pop a std::vector
|
July 18, 2011
No Format |
---|
atomicIntCmpX 6.26ns AtomicInt::compareExchange
atomicIntInc 6.05ns AtomicInt::inc
atomicIntLoad 0.57ns AtomicInt::load
atomicIntStore 0.58ns AtomicInt::store
atomicIntXchg 6.06ns AtomicInt::exchange
bMutexNoBlock 14.66ns Boost mutex lock/unlock (no blocking)
cppAtomicExchg 5.93ns Exchange method on a C++ atomic_int
cppAtomicLoad 13.66ns Read a C++ atomic_int
dispatchPoll 7.62ns Dispatch::poll (no timers or pollers)
getThreadId 2.27ns Retrieve thread id via ThreadId::get
lfence 2.84ns Lfence instruction
lockInDispThrd 7.05ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 252.79ns Acquire/release Dispatch::Lock (non-dispatch thread)
sfence 1.50ns Sfence instruction
spinLock 16.46ns Acquire/release SpinLock
|
Misc
Some 2.3GHz Xeon, 2011-08-23
No Format |
---|
atomicIntCmpX 10.63ns AtomicInt::compareExchange
atomicIntInc 8.71ns AtomicInt::inc
atomicIntLoad 0.44ns AtomicInt::load
atomicIntStore 0.43ns AtomicInt::store
atomicIntXchg 7.83ns AtomicInt::exchange
bMutexNoBlock 42.26ns Boost mutex lock/unlock (no blocking)
cppAtomicExchg 7.97ns Exchange method on a C++ atomic_int
cppAtomicLoad 7.69ns Read a C++ atomic_int
cyclesToSeconds 10.42ns Convert a rdtsc result to (double) seconds
cyclesToNanos 14.49ns Convert a rdtsc result to (uint64_t) nanoseconds
dispatchPoll 20.41ns Dispatch::poll (no timers or pollers)
functionCall 3.05ns Call a function that has not been inlined
getThreadId 3.04ns Retrieve thread id via ThreadId::get
lfence 4.79ns Lfence instruction
lockInDispThrd 6.10ns Acquire/release Dispatch::Lock (in dispatch thread)
lockNonDispThrd 283.43ns Acquire/release Dispatch::Lock (non-dispatch thread)
sfence 3.60ns Sfence instruction
spinLock 25.17ns Acquire/release SpinLock
throwInt 3.32us Throw an int
throwIntNL 4.54us Throw an int in a function call
throwException 3.43us Throw an Exception
throwExceptionNL 4.69us Throw an Exception in a function call
throwSwitch 6.45us Throw an Exception using ClientException::throwException
|
bufferAppendCopy50 8.93ns appendCopy 50 bytes to a bufferbufferAppendCopy100 8.47ns appendCopy 100 bytes to a bufferbufferAppendCopy250 16.74ns appendCopy 250 bytes to a bufferbufferAppendCopy500 20.90ns appendCopy 500 bytes to a bufferbufferAppendExternal1 8.13ns appendExternal 1 byte to a bufferbufferAppendExternal50 8.15ns appendExternal 50 bytes to a bufferbufferAppendExternal100 7.84ns appendExternal 100 bytes to a bufferbufferAppendExternal250 7.76ns appendExternal 250 bytes to a bufferbufferAppendExternal500 8.25ns appendExternal 500 bytes to a bufferbufferBasic 10.88ns buffer create, add one chunk, deletebufferBasicAlloc 12.29ns buffer create, alloc block in chunk, deletebufferBasicCopy 12.02ns buffer create, copy small block, deletebufferCopy 14.25ns copy out 2 small chunks from bufferbufferExtendChunk 4.69ns buffer add onto existing chunkbufferGetStart 3.41ns Buffer::getStartbufferConstruct 5.90ns buffer stack allocationbufferReset 4.79ns Buffer::resetbufferCopyIterator2 6.46ns buffer iterate over 2 copied chunks, accessing 1 byte eachbufferCopyIterator5 8.71ns buffer iterate over 5 copied chunks, accessing 1 byte eachbufferExternalIterator2 8.96ns buffer iterate over 2 external chunks, accessing 1 byte eachbufferExternalIterator5 23.46ns buffer iterate over 5 external chunks, accessing 1 byte eachcondPingPong 3.09us std::condition_variable round-tripcppAtomicExchg 6.64ns Exchange method on a C++ atomic_intcppAtomicLoad 0.60ns Read a C++ atomic_intcyclesToSeconds 6.30ns Convert a rdtsc result to (double) secondscyclesToNanos 6.32ns Convert a rdtsc result to (uint64_t) nanosecondsdispatchPoll 9.36ns Dispatch::poll (no timers or pollers)div32 4.79ns 32-bit integer division instructiondiv64 20.22ns 64-bit integer division instructionfunctionCall 1.74ns Call a function that has not been inlinedgenerateRandomNumber 17.21ns Call to randomNumberGenerator(x)genRandomString 1.49us Generate a random 100-byte valuegetThreadId 1.73ns Retrieve thread id via ThreadId::getgetThreadIdSyscall 41.04ns Retrieve kernel thread id using syscallhashTableLookup 123.41ns Key lookup in a 1GB HashTablehashTableLookupPf 70.57ns Key lookup in a 1GB HashTable with prefetchinglfence 3.00ns Lfence instructionlockInDispThrd 3.52ns Acquire/release Dispatch::Lock (in dispatch thread)lockNonDispThrd 324.23ns Acquire/release Dispatch::Lock (non-dispatch thread)mapCreate 21.15ns Create+delete entry in std::mapmapLookup 14.87ns Lookup in std::map<uint64_t, uint64_t>memcpyCached100 14.52ns memcpy 100 bytes with hot/fixed dst and srcmemcpyCached1000 21.79ns memcpy 1000 bytes with hot/fixed dst and srcmemcpyCached10000 185.40ns memcpy 10000 bytes with hot/fixed dst and srcmemcpyCachedDst100 93.36ns memcpy 100 bytes with hot/fixed dst and cold srcmemcpyCachedDst1000 122.05ns memcpy 1000 bytes with hot/fixed dst and cold srcmemcpyCachedDst10000 356.61ns memcpy 10000 bytes with hot/fixed dst and cold srcmemcpyCold100 377.18ns memcpy 100 bytes with cold dst and srcmemcpyCold1000 659.35ns memcpy 1000 bytes with cold dst and srcmemcpyCold10000 3.18us memcpy 10000 bytes with cold dst and srcmurmur3 10.96ns 128-bit MurmurHash3 (64-bit optimised) on 1 byte of datamurmur3 50.44ns 128-bit MurmurHash3 hash (64-bit optimised) on 256 bytes of dataobjectPoolAlloc 29.52ns Cost of new allocations from an ObjectPool (no destroys)objectPoolRealloc 4.57ns Cost of ObjectPool allocation after destroying an objectpingConditionVar 1.61us Round-trip ping with std::condition_variableprefetch 35.85ns Prefetch instructionqueueEstimator 2.23ns Recompute # bytes outstanding in queuerdtsc 6.74ns Read the fine-grain cycle countersegmentEntrySort 8.38ms Sort a Segment full of avg. 100-byte Objects by agesegmentIterator 2.09ms Iterate a Segment full of avg. 100-byte ObjectssessionRefCount 12.59ns Create/delete SessionRefserialize 55.41ns cpuid instruction for serializesfence 1.41ns Sfence instructionspinLock 9.60ns Acquire/release SpinLockstartStopTimer 33.43ns Start and stop a Dispatch::TimerspawnThread 8.89us Start and stop a threadthrowInt 2.07us Throw an intthrowIntNL 2.55us Throw an int in a function callthrowException 2.03us Throw an ExceptionthrowExceptionNL 2.81us Throw an Exception in a function callthrowSwitch 6.04us Throw an Exception using ClientException::throwExceptiontimeTrace 7.56ns Record an event using TimeTraceunorderedMapCreate 79.05ns Create+delete entry in unordered_mapunorderedMapLookup 14.62ns Lookup in std::unordered_map<uint64_t, uint64_t>vectorPushPop 3.90ns Push and pop a std::vector