[Linux-Biella] Apple iProblema
Jumping Jack
jumpingjack a mclink.it
Lun 24 Feb 2014 16:39:53 CET
On 24/02/2014 16:14, PaulTT wrote:
> On 24/02/2014 15:54, Jumping Jack 說:
>> On 24/02/2014 15:38, PaulTT wrote:
>>> On 24/02/2014 15:24, Jumping Jack 說:
>>>> On 24/02/2014 14:51, PaulTT wrote:
>>>>>
>>>>> ma sinceramente a me e' venuto quasi un conato di vomito vedendo
>>>>> quelle 4 righe :D
>>>>> fosse stato scritto decentemente, e addirittura con il goto, non
>>>>> avrebbero sbagliato
>>>>> quello imho e' proprio un errore di sfiga/disattenzione, copia
>>>>> incolla 8 volte la stessa roba, facile sbagliare :D
>>>>> poi con chissa che iEditor di cacca.... con vi e una bella
>>>>> condizione || per riga e un goto solo, vuoi vedere che non ti
>>>>> scappa?? ;)
>>>> Con una chain di || non puoi prevedere esattamente come verrà
>>>> compilata,
>>>
>>> eh?
>>>
>>>> inoltre riduce la capacità di ottimizzazione del compilatore.
>>>
>>> e due, eh?
>>
>> Un linea con una serie di OR deve essere interamente valutata prima
>> di saperne il risultato,
>
> bene, non sai programmare :D
Non stavo parlando di come risolverebbe la cosa un cervello umano. Al
massimo mi potresti dire che non so l'assembly, ma qui la differenza è
di come il codice viene tradotto.
>
>> il compilatare può fare alcune ottimizzazioni eliminandone alcune ma
>> il come lo farà è strettamente dipendente dal compilatore stesso e
>> dai parametri di ottimizzazione. Quindi il codice è di base più
>> lento, ma di quanto non si sa e varia con il compilatore.
>
> eh, no si sa, invece ;P
Suppongo tu abbia sbagliato le virgole. Comunque ti assicuro che scrivi
un codice che può essere semplificato il compilatore lo farà e il
risultato può essere imprevedibile.
Hai mai fatto eletronica, mai provato a semplicare AND e OR e scoprire
che scrivere cose che non si riescono a leggere spesso è la soluzione
più veloce?
Il compilatore fa esettamente quello quando si trova una chain di
operatori logici. Se ci sono dei salti forzati, il compilatore può
scegliere se rimuovere o meno il salto, ma non farà altre
ottimizzazione, sarà poi il branch predictor a saltare. Codice più lungo
ma più veloce e questo può essere un motivo per cui è stato scelto il
GOTO in quel codice.
>
>> Un sequenza IF GOTO invece massimizza la velocità di esecuzione e
>> lascia il resto del lavoro di ottimizzazione al branch predictor che
>> funzionerà, quasi certamente, al meglio rispetto un compilato
>> intricato e pre-ottimizzato.
>
> ma in un mondo ideale, dovresti ottenere lo stesso risultato.
Non esiste più il mondo ideale da quando i processori sono diventati
itelligenti (per compensare la stupidità dei programmatori e dei
compilatori). Come detto in IA-64 l'ottimizzazione è fatta al livello di
compilatore, quindi non c'è differenza tra un processore e l'altro. Un
codice scritto sarà sempre il meglio.
> cosa che invece non avviene, imho, nel caso di varie condizioni
> seguenti, ma non so a basso livello cosa genera il compilatore,
> soprattutto quello caccoloso di apple, che fa eseguibili gigantopici.....
Gli eseguibili giganti (sempre in C) sono dovuti al link di codice non
utilizzato, generalmente.
>
>> Questo discorso vale per l'architettura x86 e x64, non vale per IA-64
>> in quanto l'ottimizzazione del codice va fatta interamente dal
>> compilatore, quindi il comdice va scritto il più semplice (possibile
>> per il compilatore). Non conosco invece Arm.
>
> ma anche no
> il cdice di un linguaggio alto va scritto piu' semplice per chi
> programma,
Un linguaggio ad alto livello è fornito di più comandi e funzioni, ma
non ha funzioni minime. Non è realmente più semplice, ci vuole solo meno
tempo per arrivare alla soluzione, tranne il caso in cui sia riechiesto
qualcosa di particolare.
> se no tanto vale programmare in assembler
> (e infatti quando serve avere le istruzioni davvero ottimizzate cosi'
> si fa)
Si scrive Assembly. Assembler è il compilatore. So bene usarlo e una
volta usavo anche la compilazione real time, sopratutto quando la
grafica si faceva a mano e non gli acceleratori della scheda video.
JJ
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://ml.bilug.linux.it/pipermail/linux/attachments/20140224/eff6b593/attachment.html>
Maggiori informazioni sulla lista
Linux