2016-02-03 21 views
5

Gerçekten .s talimatlarını yaymanın nerede olabileceğine dikkat etmem gerekiyor mu? Yoksa sadece boyutu etkileyecek, ancak gerçek performans aynı olacak mı?Kısa talimatlar daha iyi performansa sahip midir?

Oluşturulan dll ayrıca AOT platformlarında da kullanılacaktır. Ortaya çıkan AOT-ed dl .s ile IL için aynı olacak ve olmadan?

Ben br.s, ldloca.s vb ..

+1

Lütfen kodu paylaşın? '.s'-talimatları ile ne demek istediğini açık değil. – HimBromBeere

+4

@HimBromBeere - E.g. [beq] (https://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.beq (v = vs.110) .aspx) vs [beq.s] (https: // msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.beq_s(v=vs.110).aspx) –

+0

.s ekinin sadece IL'nin sıkıştırılmasına izin verdiğine inanıyorum. ara kod. Bu, indirme sürelerinde biraz azaltabilir örn. web çözümlerinde. İşlenmiş makine kodu üzerinde herhangi bir etkisi olduğuna inanmıyorum. –

cevap

1

Duruma göre yani. .s'un temel amacı (ve ldc.i4.1 gibi basit harfli op kodları) kodun boyutunu azaltmaktır ve bir yöntemin boyutunu azaltmanın avantajı, CIL'den yerel kod üretilirken yöntemin satır içi olmasını mümkün kılmaktır. çağrı yöntemi (x86 jitter sınırı, IL'nin 32 bayt'tır). Bu durumda, kısa talimatlar, bir inline aday yöntemde kullanılıyorsa, uygulamanın performansını artırabilir. Aksi halde, yürütülen CIL olmadığı için, hem kısa hem de normal opcodes tarafından üretilen makine kodu, yerel kod ile aynı (ve ayrıca mümkün olduğunda en iyi duruma getirilmiş) olmalıdır.

+1

MSIL'in boyutunun, bir yöntemin satır içi olarak belirtilip belirtilmeyeceği ile ilgisi yoktur. Sadece makine kodunun boyutu bunu etkiler. –

+0

Bir yöntemin bayt cinsinden boyutunun azaltılması, yöntemin satır içine alınması mümkün kılıyor mu? Bunun, IL talimatları ** sayım ** 'na değil, büyüklüğüne bağlı olabileceğini düşündüm. – Vlad

+1

@HansPassant [this] (http://blogs.msdn.com/b/davidnotario/archive/2004/11/01/250398.aspx) makalesine göre, "* Satır içi boyutu, 32 baytlık IL ile sınırlıdır * ". Doğru JITter bağımlı, ama en az üç makale bu sınırlamadan bahsetti. Ayrıca, makine kodunun boyutu, parametrelerine bağlı optimizasyonlardan dolayı, satır içi ve satır içi olmayan yöntem için makine kodu farklı olabilirse nasıl etkileyebilir? – IllidanS4

İlgili konular