Aiuto con OOP - pagina 9

 
fxsaber #:

Non si tratta della mia implementazione. Puoi misurarlo alla vecchia maniera.

L'ho già fatto. I dati sono pubblicati. Proverò di nuovo in un ordine diverso. Ma anche secondo i vostri dati non c'è alcun rendimento dal lavorare con un asterisco.
 
Tuttavia, mi piacerebbe sentire un'opinione ragionata a favore del lavoro con i cartelli. Tutto ciò che è stato espresso finora è: "presumibilmente più veloce", "presumibilmente costringe il programmatore a guardare la memoria e a non allocare spazio inutile" e "sei un pazzo".
 
Vasiliy Sokolov #:
Tuttavia, mi piacerebbe sentire un'opinione ragionata a sostegno del lavoro con i puntatori. Tutto ciò che è stato espresso finora è: "presumibilmente più veloce", "presumibilmente fa sì che i programmatori guardino la memoria e non assegnino spazio inutile" e "sei un pazzo" - ovviamente.

Anche la destra-sinistra è confusa o no?

E' solo un casino oltraggioso nella testa. I puntatori sono più lenti, non più veloci. Sulla necessità di fare attenzione alla memoria il discorso era nel contesto delle differenze di stile di programmazione nei linguaggi con e senza Garbage Collector.

Vasya, non ricordi quale posizione hai preso nella discussione dopo 2-3 post già, va di qua e di là.

 
fxsaber #:

Un esempio di un potenziale problema andrebbe bene.

Ihor Herasko #:

Un altro punto. È meglio creare array di oggetti per mezzo di un puntatore. Altrimenti otterrete un array nella memoria dello stack che è molto basso:

Ho avuto un esempio di esaurimento della memoria dello stack solo in caso di ordinamento ricorsivo con una grande quantità di dati.
Il programma si è semplicemente bloccato.

Inoltre, si può usare la dichiarazione globale e in questo caso non è la memoria dello stack.
Non siete d'accordo?

 
Ihor Herasko #:

Non è un problema, tanto meno un problema potenziale. Sono solo le peculiarità della gestione della memoria in MT. Qui c'è un array statico:

Ed ecco un array dinamico:

In questo caso tutto si compila e funziona.

Sono d'accordo, ma non ho mai avuto questi volumi nella mia pratica.
Di regola, ho bisogno di un calcolo rapido della "coda" di un indicatore, per esempio, senza chiamare la funzione dell'indicatore (libreria) stessa,
ecco perché ho applicato un calcolo più veloce dei valori dell'indicatore utilizzando la formula. In questo caso, il consumo di memoria in generale è molto basso.
In generale, raccomando questo approccio a tutti gli sviluppatori in futuro per risparmiare memoria e tempo di calcolo delle funzioni in virgola mobile.
Se possibile, molti dati dovrebbero essere convertiti in formato intero - accelera davvero il processo.

P.S.: Naturalmente, quanto sopra è un caso di risparmio, per esempio, di qualche centinaio di millisecondi.

 
Dmitiry Ananiev:

Sto facendo una classe come questa.

Ora voglio chiamare un array di oggetti:

Come creare rapidamente un array di oggetti se il costruttore ha parametri a livello globale?

Per esempio? Creare prima gli oggetti cambiando il costruttore e poi come faccio a sostituire gli oggetti con i simboli in OnInit?

Forse c'è una soluzione più semplice?

class Strategy1
{
        Strategy1();
 };

class Strategy2
{
        Strategy (string sym);
}

Nella dichiarazione della classe Strategy2, il nome stesso del costruttore della classe manca di "2", altrimenti non è un costruttore.

Motivazione: