Skip to main content

Meetem Performance Blog

Tag: C#

Managed primitives Part I

September 27, 2023January 19, 2024 meetem Leave a comment

In the Part 1 the layouts of:
1. System.Object
2. T[] array
3. string

This article also reveals how to access those types in unsafe or unmanaged environment. How we can change the object type or get array/string length pointer to change it later.

Read More

Detecting .NET runtime at compile time

September 12, 2023September 12, 2023 meetem Leave a comment

When you want to have single DLL which works in all .NET runtimes (Mono/IL2CPP/NETFX/NETCore), it’s crucial to detect which runtime you are currently in. While there are some dynamic methods, like query runtime name and check it for “Mono” string, it’s not the best approach, and definitely not the performant one.

Read More

.NET(s) Fields and their offsets

September 10, 2023January 20, 2024 meetem Leave a comment

Field offsets can help you in numerous ways, first what comes in mind is that you can set fields of the struct or class instance without using TypedReference (doesn’t work in IL2CPP) and without GC allocs which comes with boxing when either instance or a value is a struct. Second, it could help you with unmanaged access to the class/struct for custom binary serialization, etc.

Read More

Saddling up IL to our benefit

September 6, 2023September 10, 2023 meetem Leave a comment

When you come from C++ to C# it’s such a relief. C# is a greatly designed language, you can do almost anything you want with it, apart from some design choises like macroses and C++ template<>. But sometimes we can find ourselves near the wall which you can’t pass with C# itself. IL Comes To […]

Read More

C# Bool To Int Conversion

March 12, 2023March 16, 2023 meetem Leave a comment

Overview and performance comparasion for bool -> int/uint/byte conversion in C#
And simple solution for fast platform-independent conversion.

Read More

The cost of Unity’s forgiveness

January 16, 2023May 19, 2023 meetem Leave a comment

Short overview of the costs you are paying by using extremely safe single-threaded Unity API (which is basically every call to the engine, including properties like Transform.localPosition) and how to avoid paying them.

Spoiler: these costs are huge.

Read More

How to get a pointer to managed object in C#

January 14, 2023January 17, 2023 meetem Leave a comment

Not really quick overview of methods for taking a pointer of managed C# object.

With a great forbidden solution inside.

Jump in!

Read More

Recent Posts

  • Unity LockBufferForWrite: When You Should Prefer Them and Why Your Choice Matters
  • Using Vulkan in Unity shaders
  • Managed primitives Part I
  • Is .NET 8 performant enough?
  • Detecting .NET runtime at compile time

Archives

  • January 2025
  • June 2024
  • September 2023
  • March 2023
  • January 2023

Categories

  • Programming
  • Uncategorized
sparkling Theme by Colorlib Powered by WordPress