Questions Options du compilateur...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Questions Options du compilateur...

Message par Mesa »

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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Questions Options du compilateur...

Message par Ollivier »

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).
mesa a écrit :Les traductions sont mises à jour mais elles ne seront effectives que lors de la prochaine release final dans quelques jours probablement.
Merci beaucoup pour le temps consacré.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

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
■ 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
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Re: Questions Options du compilateur...

Message par Fred »

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.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Bonjour,

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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Questions Options du compilateur...

Message par Ollivier »

Chose importante aussi, pour comparer des chronométries d'exécution : mettez un Delay(16) au départ.

Code : Tout sélectionner

Delay(16)
t1 = ElapsedMilliseconds()
; routine à chronométrer
t2 = ElapsedMilliseconds()
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 :

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é
À vous de juger !

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) )
Répondre