September 02, 2012

Alıntı (acehreli):

>

Yoksa aralarında anlamsal olarak çok büyük fark var:

  • ++i: i'yi arttır

  • i++: i'yi arttır ama ifadenin değeri olarak i'nin eski değerini kullan

Bu konuda istemeden hile yaptığımı farkettim. ++i'nin tanımı aslında şöyle olmalı:

  • ++i: i'yi arttır ve ifadenin değeri olarak i'nin değerini kullan

Öyle yazınca doğrusu aralarındaki fark azalıyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 20, 2012

Şurada yer alan duyuru (http://ddili.org/forum/thread/975) sayesinde GDC'nin davranışın daha akıllıca olduğunu gördüm...:)

Çünkü ilk iletimde bahsettiğim, switch()'in aralıklar ile kullanımda işlerin istemeyeceğimiz boyuta geldiğini görmüştük. Bunun GDC'de olmadığını öğrenmiş bulunmaktayım. Böylece yukarıdaki önerimi düzeltmek zorundayım! Eğer GDC veya DMD'nin yeni sürümlerini (bu test 2.060 ve öncesi için yapıldı!) kullanıyorsanız farklı durumlar olabilir. Örneğin GDC'nin ürettiği assembly kodu şu şekilde:

	pushq	%rbx
	movl	$64, %ebx
L59:
	addl	$1, %ebx
	cmpb	$65, %bl
	jae	.L62
L3:
	testb	%bl, %bl
	jne	.L59
	xorl	%eax, %eax
	popq	%rbx
	ret
L62:
	cmpb	$90, %bl
	jbe	.L31
	leal	-97(%rbx), %eax
	cmpb	$25, %al
	ja	.L3
	movzbl	%bl, %esi
	movl	$.LC1, %edi
	xorl	%eax, %eax
	call	printf
	jmp	.L59
L31:
	movzbl	%bl, %esi
	movl	$.LC0, %edi
	xorl	%eax, %eax
	call	printf
	jmp	.L59

Gördüğünüz gibi herhangi bir look-up table olmadığı gibi, verdiğim aralıkların için de mi yoksa dışında mı olduğunu test ediyor. Aslında if()'li sürümü de çok benzer (ama aynı değil!) kod ürettiğini gördüm. Belki GDC'nin hızlı olduğu durumlar bu ve benzeri farklılıkların toplamı olsa gerek. Ne dersiniz?

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 21, 2012

gdc'nin dmd'den daha hızlı işleyen kod ürettiği biliniyor. (Ben de bir kaç kere ucundan değinmiş olmalıyım. :)) Bunun bir nedeni, gdc'nin çok olgun bir derleyici olan gcc'nin arka tarafını kullanıyor olması.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »