|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2008
Messaggi: 8
|
Compilatori ed espressioni
Benvenuti,
la domanda che vorrei porre è: I compilatori operano manipolazioni sulle espressioni ? Mi spiego meglio A/X + B/X^2 verrà compilato con prima le due divisioni e poi l'addizione o il compilatore può trasformarlo in (A + B/X)/X ad esempio ? La domanda nasce da una questione sollevata in un altro thread e che ho voluto riproporre qua. Ultima modifica di Algobardo : 18-10-2008 alle 20:44. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Il tuo esempio è sbagliato, dovrebbe essere (A + B/X)/X.
Riguardo alla domanda mi verrebbe da risponderti che è più oneroso fare raccoglimenti vari che calcolare direttamente le espressioni come sono scritte ma siccome non sono sicuro di come funzioni effettivamente aspettiamo che risponda qualcun altro di più esperto |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Oct 2008
Messaggi: 8
|
Quote:
comunque il ragionamento include ovviamente una qualunque manipolazione che modifichi la struttura dell'espressione. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Se si tratta di valori noti a "compile time" sì, altrimenti il compilatore deve generare una catena di istruzioni che riproducano quel comportamento.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
L'espressione presa così è un po' difficile che venga ottimizzata (anch perché per elevare a potenza spesso si usa una funzione di libreria), ma un'espressione di questo tipo:
A/X + B/(X*X) non è tanto impossibile che venga ottimizzata. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Infatti ho provato ad ottimizzare il codice postato nell'altro thread con -O3 su GCC e mi sembra di capire che precalcola anche l'intero valore dell'espressione (perché x è una variabile, ma è nota a compile time).
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
In secondo luogo dalla "bontà" del compilatore (anche se mi pare difficile che riesca ad arrivare a simili livelli di ottimizzazione del codice).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 16:10. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ciò non toglie che sulla carta hanno la libertà di farlo.
Infatti anche il K & R, trattando l'argomento, suggerisce che se si vuole avere la certezza della valutazione di certe espressioni si deve far ricorso a variabili temporanee "di appoggio".
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:56.




















