Les traductions sont mises à jour mais elles ne seront effectives que lors de la prochaine release final dans quelques jours probablement.
J'ai appris que l'optimisation se faisait aussi sur l'asm, voir ici https://www.purebasic.fr/english/viewto ... 04f1038b09
L'optimisation du C est censé prendre plus de temps, ce qui peut être gênant quand on debug et que l'on compile toutes les 10 secondes, c'est pourquoi il y a une option pour activer cette optimisation que quand on en a besoin.
M.
Questions Options du compilateur...
Re: Questions Options du compilateur...
Bonjour mesa,
l'optimisation ASM existe, mais elle n'est pas significative, comparée aux décisions automatisées durant une optimisation C (d'où un temps de compilation plus long si l'option d'optimisation en C est choisie dans les options de compilation).
l'optimisation ASM existe, mais elle n'est pas significative, comparée aux décisions automatisées durant une optimisation C (d'où un temps de compilation plus long si l'option d'optimisation en C est choisie dans les options de compilation).
Merci beaucoup pour le temps consacré.mesa a écrit :Les traductions sont mises à jour mais elles ne seront effectives que lors de la prochaine release final dans quelques jours probablement.
Re: Questions Options du compilateur...
Bonsoir,
Merci Ollivier pour avoir parlé de ton parcours, ça permet de mieux comprendre les personnes avec qui on échange.
C'est d'autant plus important que ce forum manque un peu de vie depuis l’arrêt du Hors sujet
Heureusement certains d'entre vous n'hésitent pas a répondre quand on pose une question et j'apprécie vraiment.
cage
Merci Ollivier pour avoir parlé de ton parcours, ça permet de mieux comprendre les personnes avec qui on échange.
C'est d'autant plus important que ce forum manque un peu de vie depuis l’arrêt du Hors sujet
Heureusement certains d'entre vous n'hésitent pas a répondre quand on pose une question et j'apprécie vraiment.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Questions Options du compilateur...
L'optimiseur est aussi disponible sur la version ASM du compilateur, donc il faut cocher la case si vous faites une version release de votre programme.
Re: Questions Options du compilateur...
Bonjour,
Merci Fred.
cage
Merci Fred.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Questions Options du compilateur...
Chose importante aussi, pour comparer des chronométries d'exécution : mettez un Delay(16) au départ.Sinon, vous vous retrouvez avec des conclusions qui vous font penser que la version 5.50 x64 est plus rapide que les versions 6 et ultérieures, même avec l'option d'optimisation activée. Et ça, c'est un peu ballot...
Le code suivant stocke le premiers millions de nombres premiers dans le tableau Prime.i().
Quelques résultats sur mon piètre matériel :À vous de juger !
Code : Tout sélectionner
Delay(16)
t1 = ElapsedMilliseconds()
; routine à chronométrer
t2 = ElapsedMilliseconds()
Le code suivant stocke le premiers millions de nombres premiers dans le tableau Prime.i().
Quelques résultats sur mon piètre matériel :
Code : Tout sélectionner
2642ms V5.50 X64 (ASM classique)
2580ms V6.00 X64 ASM normal
2656ms V6.00 X64 ASM optimisé
2532ms V6.00 X64 C normal
2158ms V6.00 X64 C optimisé
Code : Tout sélectionner
Delay(16)
tInitial = ElapsedMilliseconds()
sievePageSize = 1 << 16
primeListSize = 1 << 20
sievePageLimit = sievePageSize - 1
primeListLimit = primeListSize - 1
Global Dim sievePage.i(sievePageLimit)
Global Dim prime.i(primeListLimit)
Global Dim primeSieve.i(primeListLimit)
natural = 2
primeLast = 0
sievePageOffset = 0
Repeat
Repeat
If sievePage(natural - sievePageOffset) = 0
primeLast + 1
If primeLast > primeListLimit
primeLast - 1
Break 2
EndIf
prime(primeLast) = natural
sieve = natural * natural
While sieve =< sievePageLimit
sievePage(sieve - sievePageOffset) = 1
sieve + natural
Wend
primeSieve(primeLast) = sieve
EndIf
natural + 1
Until (natural - sievePageOffset) > sievePageLimit
sievePageOffset + sievePageSize
For i = 0 To sievePageLimit
sievePage(i) = 0
Next
For i = 1 To primeLast
j = (primeSieve(i) - sievePageOffset)
While j =< sievePageLimit
If j < 0
Break
EndIf
sievePage(j) = 1
j + prime(i)
Wend
primeSieve(i) = j + sievePageOffset
Next
ForEver
tFinal = ElapsedMilliseconds()
For i = 1 To primeLast
ratio.d = i / prime(i)
;Debug Str(i) + ": " + Str(prime(i) ) + Chr(9) + StrD(ratio)
Next
MessageRequester("#" + Str(primeLast) + " : " + Str(prime(primeLast) ), Str(tFinal - tInitial) )