Home > Produkte > SmartHeap >> Neu in Version

SmartHeap - Das ist neu


Version 9.0:

Kompatibilität mit MS Visual Studio 2008.
SmartHeap enthält jetzt .pdb Files für Debug und Run-Time Libraries.


Version 8.1:

Die SmartHeap 8.1 Multi-Threaded Libraries beinhalten jetzt Leistungsoptimierungen, die sie bis zu 2x schneller als Version 7 machen. Diese Leistungssteigerungen sind am stärksten unter dem Windows Betriebssystem.

Es ist zu beachten, daß sowohl die allgemeinen Leistungsverbesserungen von SmartHeap Version 8.1 als auch die unten unter MemDefaultPoolThreadExclusive beschriebenen, nur verfügbar sind auf Single-Prozessor Systemen (einschließlich Hyper-Threaded Intel Prozessoren). Auf SMP Systemen ist die Leistung nur mit dem speziellen SmartHeap/SMP Produkt zu steigern.

Neues API zur Kontrolle von thread-spezifischer Verwendung des Heaps

SmartHeap 8.1 führt ein neues API ein, MemDefaultPoolThreadExclusive. Damit kann bei Anwendungen, die den Heap exklusiv in einem oder mehreren Threads verwenden, die Leistung außerordentlich verbessert und die Heap-Verwaltung stark vereinfacht werden.
Anwendungen mit einem oder mehreren heap-intensivem Threads, die exklusiv den Speicher freigeben, den sie allokieren, profitieren am meisten von diesem neuen API.

Auszug aus der Dokumentation zu MemDefaultPoolThreadExclusive:

Use heap MemDefaultPoolThreadExclusive only in threads that exclusively free all pointers that are allocated by that thread after the call to MemDefaultPoolThreadExclusive.

The new API has the following prototype:

MEM_BOOL MemDefaultPoolThreadExclusive(unsigned flags);

Specify one of the following values for flags:

  • MEM_THREAD_EXCLUSIVE_OFF: default behavior – current thread uses process-wide default memory pool. Heap operations are synchronized with other threads.

  • MEM_THREAD_EXCLUSIVE_ON: creates thread-specific default memory pool for the current thread. Synchronization with other threads is not needed, resulting in improved performance.

    Specify this value only if all allocations created with malloc, calloc, new or realloc in the calling thread are freed exclusively by the same thread. Can be combined disjunctively with thread.

  • MEM_FREE_ON_THREAD_TERM. MEM_FREE_ON_THREAD_TERM: creates thread-specific default memory pool for the current thread. All allocations created in the current thread are automatically freed at thread termination, simplifying and improving performance of storage management. Note that you still must calls delete for objects created with operator new in order for destructors to execute, though you can override operator delete for such objects with an empty operator delete definition if desired (if the objects are used exclusively in thread-specific memory pools) since SmartHeap will automatically free the memory at thread termination.

    Specify this value only if all allocations created with malloc, calloc, new or realloc in the calling thread are either not freed or are freed exclusively by the same thread, and if there are no references to allocations created in the calling thread from other threads after the calling thread terminates. Can be combined disjunctively with MEM_THREAD_EXCLUSIVE_ON.

Call this API from each thread where you want one or both of the above behaviors.

 

[Nur für Windows] Verbesserte Unterstützung der Compiler Debug-Info in Debug SmartHeap

SmartHeap Version 8.1 nutzt jetzt dbghelp.dll für Symbol und File/Zeilen Information zur Unterstützung der Heap-Fehler Diagnose. Das bietet größere Kompatibilität mit mehr Compiler und Debug-Information Formaten.


KESSLER Software GmbH & Co KG   |   An der Ziegelei 6   |   D-37124 Rosdorf   |   Tel 0551-507620   |   Fax 0551-5076222   |   Email info@kessler.de