Name | Modified | Size | Downloads / Week |
---|---|---|---|
Release | 2010-12-09 | ||
ReadMe.txt | 2011-08-02 | 4.8 kB | |
Totals: 2 Items | 4.8 kB | 1 |
Kindly rate this project to help me further improve it ! Feel free to post a ticket in case of a bug or feature request :) 0.7.3 ----- - Improved : Queue access functions dynamically select the fastest possible method for any situation now. - Improved : Fully optimized cache performance. - Improved : Read/Write performance fully optimized on assembly level. (See benchmarks for details) - Improved : Vectorized Load & Pointer handling, improving queue performance when using High Readpointer count. - Improved : ReWritten CPU info functions in Assembly now for extremely fast Queue creation & control - Improved : Seriously improved pointer aliasing, false sharing & boundary alignments for optimal caching & SSE2 performance. - Improved : Read/Writes smaller than 4kB are now handled by Agner Fog's "Asmlib" memcpy functions. (Special Thanks to Agner Fog for the amazing optimization manuals & libs !! - please visit www.agner.org) - Updated : All benchmarks - Added : Comparison Benchmarks based on Queue sizes fitting in RAM, L2 & L1 cache. 0.7.2 ----- - Critical Fix : Queue data could get corrupt after lots of reading/writing. - Improved : ~13% speed gain on small writes when using a lot of channels. - Improved : ~15% speed gain when writing data to a full FIFO queue. - Improved : ~60% speed gain when Flushing all ReadChannels at once (using "-1" in the command) - Changed : BufferGetOverflow_Wait(BufferNr) returns an Unsigned Int now i.s.o. a Bool. (compatibility with ANSI C) - Updated : Write Benchmarks & Code Example 0.7.1 ----- - Fix : BufferRead() could never return "-3" (Queue is Empty), even if it was empty. - Improved : Updated max nr of Read Channels from 32 to 128. keep in mind that every additional Read Channel costs a little bit extra CPU power. See benchmarks for details. It's advised to not make more ReadChannels than you need, in order to have max performance. 0.7.0 ----- - Changed : Renamed project files from "Buffers.xxx" to "UltraQueue.xxx" :) - Fix : BufferCreate() could cause a mem. access violation in very specific low memory environments. - Added : BufferCreate() could return 0 for multiple reasons. new param. (*Status) was added for error handling. (See "UltraQueue.h" for details) - Improved : Finetuned highly threaded access with small blocksizes (~280% speed improvement) - Improved : Improved Threaded performance for HyperThreading-enabled CPU's - Improved : CPU load decreased in high-threaded situations (~50%) - Improved : Queue access latency lowered by ~35% in specific high threaded situations. - Improved : Slightly optimized clean-up code on queue creating errors. - Changed : Code Example file has been updated with new parameter in BufferCreate(). 0.6.9 ----- - Critical Fix : DLL crashed when not enough memory could be allocated. - Improved : Faster treaded access speed for Single Core machines - Improved : Speed increased ~20% when R/W small blocksizes (see benchmarks) 0.6.8 ----- - Added : Doc. -> Benchmarks Helps the programmer to get the max. speed using UltraQueue See "Benchmarks" folder 0.6.7 ----- - Added : OverFlow/Wait flag functions (See "Code Example" for details) 0.6.6 ----- - Added : 1 Application Example * Multi Data Copy/Processing 0.6.5 ----- - Added : 2 Application Examples * RS232 Driver * High Speed Capturing 0.6.4 ----- - Added : BufferFlush() now accepts "-1" as ChannelNr, clearing ALL queues - Fix : ChannelNr parameters was not present in the Header doc. - Example file has been updated with BufferFlush() 0.6.3 ----- - Added : Dynamic Block Writing (RING) 0.6.2 ----- - Added : Defines in Header (FIFO / RING) - Fix : Corrected an error in the header explanation - Fix : A minimum of 1 ReadChannel is now requested when creating a queue 0.6.1 ----- - Added : Example file 0.6 --- - Added : Dynamic Block Writing (FIFO only atm) - FIFO write speeds improved by 3968% - MultiRead supports up to 32 parallel Read members now - Each additional MultiRead copy requires 5% less cycles 0.5 --- - Added : Dynamic Block Reading - Read speed improved by 1551% - Every additional MultiRead copy requires 60% less cycles 0.4 --- - Improved caching methods. - Write speed improved with 205% - Read speed improved with 213% 0.3 --- - Write speed improved with 93% - Read speed improved with 91% 0.2 --- - Added : MultiRead 16 0.1 --- Inital version ------ Multiread "x" : Up to x clients have their own copy of a queue, while only using the memory space of 1. Dynamic Block Read/Write : Fastest possible execution method is chosen automatically for any nr of bytes. (In Blocks or Byte-by-Byte)