[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