Di che tipo di spese generali stiamo parlando?
Se stiamo parlando di codice macchina, allora, per quanto ne so, la funzione virtuale chiama la procedura indirettamente, attraverso la tabella delle funzioni virtuali. E nel caso di funzioni normali è una chiamata diretta. Penso che ci siano poche spese generali.
L'overhead del programmatore è molto più importante - scrittura e manutenzione del codice, correzione di bug...
Le funzioni senza parametri sono più veloci delle funzioni con parametri.
Le funzioni senza parametri sono più veloci delle funzioni con parametri.
Certo, mi sono sbattuto in assembler per 2 anni )) Vero, per i processori embedded, ma C++ è sempre C++. Anche una funzione senza parametri ha un prologo e un epilogo, che richiede tempo.
Il modo più veloce, ovviamente, è usare una macro progettata per sembrare una funzione. È un peccato che non ci siano funzioni in linea in MQL, ma le macro sono un sostituto per
Di che tipo di spese generali stiamo parlando?
Se stiamo parlando di codice macchina, allora, per quanto ne so, la funzione virtuale chiama la procedura indirettamente, attraverso la tabella delle funzioni virtuali. E nel caso di funzioni normali è una chiamata diretta. Penso che ci siano poche spese generali.
L'overhead del programmatore è molto più importante - scrittura e manutenzione del codice, correzione degli errori...
Naturalmente, non ci interessa l'overhead del tempo di esecuzione - quei kilobyte extra non contano. Non ci importa di quei kilobyte in più.
Una macro sarebbe ovviamente la più veloce.
Rinat ha detto che MT - un serio inliner funziona, e dà buoni risultati.
Sì, secondo le mie osservazioni personali, in MT4 il lavoro dell'inliner dipende dalla dimensione dello stack (memoria allocata per le variabili nello stack) e dal numero di variabili.
Ma in MT5 la dipendenza dalla dimensione dello stack sembra essere rimossa e l'ottimizzatore è più assistente in generale.
In relazione a un compito ad alta intensità di risorse, è sorta una domanda - qual è l'overhead dell'uso di OOP rispetto alla programmazione procedurale convenzionale.
Qualcuno ha fatto questi test?
Sono interessato alla differenza tra:
- Chiamata di funzione con parametri
- Chiamata di funzione senza parametri
- Chiamata di una macro con la funzionalità della funzione precedente
- Chiamata di funzione - metodo di una classe
- Chiamata di funzione virtuale
Se sono disponibili librerie OOP pronte all'uso, questo riduce il tempo di sviluppo dell'applicazione. La velocità di esecuzione può rallentare quando si chiama la funzione virtuale.
L'unica sfumatura è la disponibilità di buone librerie OOP.
"Libreria standard" viola il mio senso della bellezza e mi fa andare su DLL e codificare tranquillamente in C++
Rinat ha detto che in MT - un inliner serio funziona, e dà buoni risultati.
Sì, l'inliner è molto aggressivo e automatico.
L'ottimizzatore x64 è anche una testa sopra la versione 32bit (questo ramo è completamente fermo e non sviluppato). Inoltre, l'ottimizzatore x64 sa come srotolare la maggior parte delle funzioni virtuali in chiamate dirette e inline. Dopo tutto, le funzioni virtuali sono spesso degenerate.
Ma dove il vero overhead è nelle operazioni di riferimento e nel controllo degli indici dinamici. Devono essere sempre controllati.
In relazione a un compito ad alta intensità di risorse, è sorta una domanda - qual è l'overhead dell'uso di OOP rispetto alla programmazione procedurale convenzionale.
Naturalmente, le belle caratteristiche di OOP sono costose in termini di risorse e di tempo per il debug. OOP ha senso solo come un comodo involucro di testo o in caso di uso minimo all'inizializzazione di runtime... In realtà, OOP era solo una cosa di marketing di Microsoft per aumentare i costi delle ore di lavoro dei programmatori e per stimolare l'acquisto di attrezzature più avanzate. E loro stessi non sono stupidi e scrivono tutto il software in C e assembler.

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
In relazione a un compito ad alta intensità di risorse, è sorta una domanda - qual è l'overhead dell'uso di OOP rispetto alla programmazione procedurale convenzionale.
Qualcuno ha fatto questi test?
Sono interessato alla differenza tra: