Software Development for Professionals
Version 10.0:
- Kompatibilität mit MS Visual Studio 2010.
- Neue Version speziell für Multi-Core Prozessoren: SmartHeap for Multi-Core
Bietet zusätzlich zu den standard Features spezielle Optimierungen für multithreaded Anwendungen auf Multi-Core Prozessoren.
- Die Warnung über fehlende Heap-Information in Windows DLLs ist jetzt standardmäßig abgeschaltet.
-
Unterstützung für alloc size > 4GB in der 64-Bit Version.
- Verbesserte Funktionalität von thread-exlusive pools (erstellt mit MemPoolInit(MEM_POOL_THREAD_EXCLUSIVE)).
- Erhöhung des concurrent thread count bei SmartHeap for Multi-Core und SmartHeap for SMP von 64 auf 256.
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.