aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Common/BitMapPool.cs
diff options
context:
space:
mode:
authorLDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>2021-02-22 03:23:48 +0100
committerGitHub <noreply@github.com>2021-02-22 03:23:48 +0100
commitdc0adb533dc15a007e9ca2dc0533ef6a61f13393 (patch)
tree4b3588600cfd163e9f7a72b176b15befe078e941 /ARMeilleure/Common/BitMapPool.cs
parent15868801148129802173f2162ebff24835cb20ba (diff)
PPTC & Pool Enhancements. (#1968)
* PPTC & Pool Enhancements. * Avoid buffer allocations in CodeGenContext.GetCode(). Avoid stream allocations in PTC.PtcInfo. Refactoring/nits. * Use XXHash128, for Ptc.Load & Ptc.Save, x10 faster than Md5. * Why not a nice Span. * Added a simple PtcFormatter library for deserialization/serialization, which does not require reflection, in use at PtcJumpTable and PtcProfiler; improves maintainability and simplicity/readability of affected code. * Nits. * Revert #1987. * Revert "Revert #1987." This reverts commit 998be765cf7f7da5ff0c1c08de704c9012b0f49c.
Diffstat (limited to 'ARMeilleure/Common/BitMapPool.cs')
-rw-r--r--ARMeilleure/Common/BitMapPool.cs24
1 files changed, 19 insertions, 5 deletions
diff --git a/ARMeilleure/Common/BitMapPool.cs b/ARMeilleure/Common/BitMapPool.cs
index aac32d55..d8d297fa 100644
--- a/ARMeilleure/Common/BitMapPool.cs
+++ b/ARMeilleure/Common/BitMapPool.cs
@@ -4,15 +4,29 @@
{
public static BitMap Allocate(int initialCapacity)
{
- BitMap result = ThreadStaticPool<BitMap>.Instance.Allocate();
- result.Reset(initialCapacity);
+ return BitMap().Reset(initialCapacity);
+ }
+
+ #region "ThreadStaticPool"
+ public static void PrepareBitMapPool(int groupId = 0)
+ {
+ ThreadStaticPool<BitMap>.PreparePool(groupId, ChunkSizeLimit.Small);
+ }
- return result;
+ private static BitMap BitMap()
+ {
+ return ThreadStaticPool<BitMap>.Instance.Allocate();
+ }
+
+ public static void ResetBitMapPool(int groupId = 0)
+ {
+ ThreadStaticPool<BitMap>.ResetPool(groupId);
}
- public static void Release()
+ public static void DisposeBitMapPools()
{
- ThreadStaticPool<BitMap>.Instance.Clear();
+ ThreadStaticPool<BitMap>.DisposePools();
}
+ #endregion
}
}