Saya memiliki program yang membutuhkan kinerja cepat. Dalam salah satu loop dalamnya, saya perlu menguji jenis objek untuk melihat apakah itu mewarisi dari antarmuka tertentu.
Salah satu cara untuk melakukannya adalah dengan fungsionalitas pemeriksaan tipe built-in CLR. Metode paling elegan yang mungkin ada adalah kata kunci 'is':
if (obj is ISpecialType)
Pendekatan lain adalah memberikan kelas dasar fungsi GetType () virtual saya sendiri yang mengembalikan nilai enum yang telah ditentukan sebelumnya (dalam kasus saya, sebenarnya, saya hanya perlu bool). Metode itu akan cepat, tetapi kurang elegan.
Saya telah mendengar bahwa ada instruksi IL khusus untuk kata kunci 'is', tetapi itu tidak berarti itu dijalankan dengan cepat ketika diterjemahkan ke dalam perakitan asli. Adakah yang bisa berbagi beberapa wawasan tentang kinerja 'adalah' versus metode lainnya?
UPDATE: Terima kasih atas semua jawaban yang diinformasikan! Tampaknya beberapa poin berguna tersebar di antara jawaban: Poin Andrew tentang 'adalah' secara otomatis melakukan pemeran itu penting, tetapi data kinerja yang dikumpulkan oleh Binary Worrier dan Ian juga sangat berguna. Alangkah baiknya jika salah satu jawaban diedit untuk menyertakan semua informasi ini.