hung-doan / .bookmarks

My life bookmarker
0 stars 0 forks source link

In .NET empty object take at least 12 or 24 bytes because of Object Header Word & Method Table Pointer #66

Open hung-doan opened 5 years ago

hung-doan commented 5 years ago

Pro .NET Performance: Optimize Your C#, e.g

public class Student { }

var student = new Student();

Bình thường khi mình allocate Student object trên heap memory thì đoán chừng sẽ tốn chừng khoảng 1 bytes vì không có member như trong C++ Nhưng trong C# nó tốn nhiều hơn, tối thiểu 12 bytes cho hệ thống x86 hay 24bytes cho hệ thống x64, không quan tâm là có dữ liệu hay không. Vì trong C# nó dành riêng 8 bytes (hay 16 bytes trong x64) để phục vụ cho JIT & CLR (trong x86, 4 bytes cho Object Header Word; 4 bytes cho Method Table Pointer; và tối thiểu 4 bytes cho data)