Search Issue Tracker
Won't Fix
Votes
0
Found in
6000.0.16f1
6000.1.0a7
6000.2.0a1
Issue ID
UUM-77985
Regression
No
Slow synchronization primitives (lock, volatile, interlocked) on IL2CPP
Steps to reproduce:
Originally reported on Discussions here: [https://discussions.unity.com/t/poor-performance-of-synchronization-primitives-lock-volatile-interlocked-in-il2cpp/1489837]
{code:java}
int count;
public void TestNormal()
{
[MethodImpl(MethodImplOptions.NoOptimization)]
static void Incr(ref int v)
{
v+;
}
for (int i = 0; i < 100000000; i)
{
Incr(ref count);
}
}
public void TestVolatile()
{
for (int i = 0; i < 100000000; i+)
{
Volatile.Write(ref count, Volatile.Read(ref count) + 1);
}
}
public void TestInterlocked()
{
for (int i = 0; i < 100000000; i+)
{
Interlocked.Increment(ref count);
}
}
public void TestLock()
{
for (int i = 0; i < 100000000; i)
{
lock (this)
{
count+;
}
}
}
{code}
Actual results:
Mono
{code:java}
normal: 142ms
volatile: 143ms
Interlocked: 347ms
lock: 1782ms{code}
IL2CPP
{code:java}
normal: 114ms
volatile: 1310ms
Interlocked: 990ms
lock: 6872ms{code}
.NET 8
{code:java}
normal: 23.43ms
volatile: 21.70ms
Interlocked: 343.34ms
lock: 1,305.52ms{code}
Expected results:
Reproducible with versions:
6.0 preview
Tested on (OS):
Windows
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Crash on UndoManager::RegisterUndoInternal when applying added GameObjects to a Prefab
- [Asset Bundles] A new bundle hash is not generated when the name of a serialized field is changed
- Icon section shows incomplete message and unusable check box in Build Profiles and Player Settings window instead of “Not applicable for this platform” for Dedicated Server Platform
- Assets are created in the Package folders when creating assets via custom buttons in the Inspector window or other windows
- “Select” windows are named differently on Windows and macOS
Resolution Note:
Closing because of low priority and risk.
Resolution Note:
Closing because of low priority and risk.