El esplendor y la pobreza de la OLP - página 4

 
Integer:

... Se supone que debería funcionar muy rápidamente, porque no hay llamadas if o switch que cambien el funcionamiento del programa, sólo una vez que la clase requerida -la descendiente- es seleccionada durante la inicialización, entonces todo funciona directa y fácilmente.

...

MetaDriver:

...

En los lenguajes con punteros "reales" no habrá tal efecto, switch perderá allí, cuanto mayor sea la lista de selección.

...

Chicos, fumad la documentación del interruptor. Un buen conmutador es una transición conmutada cuyo rendimiento no depende del número de opciones. 1 opción, 100 o 1000 - su velocidad de transición será constante.
Как работает оператор switch в Си/Си++ - CyberForum.ru - форум программистов и сисадминов
  • Evg
  • www.cyberforum.ru
ВНИМАНИЕ! Вопросы по существу обсуждаемого вопроса просьба задавать здесь или создать тему на форуме и кинуть на неё ссылку в блог или мне в личку. Причин для этого несколько. Я, как и любой другой автор, всегда могу упустить интересный момент обсуждаемой темы (что подтвердилось на практике). А потому задаваемый вопрос может закрывать...
 
Integer:
¿Por qué tengo que entender los mecanismos de compilación? ¿Sólo para creer que un mal resultado es mejor que uno bueno?

Es una afirmación extraña. Estás tratando de resolver problemas de optimización a nivel de compilador y sin embargo no sabes cómo funciona el compilador.

 
C-4:
Chicos, leed la documentación del interruptor. Un buen conmutador es una transición conmutada cuyo rendimiento no depende del número de opciones. 1 opción, 100 o 1000 - su velocidad de transición será constante.
Sí, podemos cambiar con el salto directo de la tabla si hay suficientes elementos como en los ejemplos.
 

Soy casi nulo en programación y sé que la POO está hecha más por comodidad que por rapidez. Y es cierto: la POO es algo muy útil, si se sabe cómo utilizarla.

Por otro lado, es mejor que los metacotizaciones pasen el tiempo en las propagaciones incorrectas en el probador. No tiene sentido escribir EAs utilizándolo si no puedes probarlos adecuadamente. La mayor parte se aplica al comercio en FORTS.

 
dimeon:

Soy casi nulo en programación y sé que la POO está hecha más por comodidad que por rapidez. Y es cierto: la POO es algo muy útil, si se sabe utilizar.

Por otro lado, es mejor que los metacotizaciones pasen el tiempo en las propagaciones incorrectas en el probador. No tiene sentido escribir EAs utilizándolo si no puedes probarlos adecuadamente. Esto se refiere sobre todo a la negociación en FORTS.

¿Ha dado ya una explicación detallada (prueba) en algún sitio?

Aquí se acostumbra a fundamentar las afirmaciones con pruebas, de lo contrario ni siquiera se las mira. ;)

 

Y en general, el ejemplo del inicio superior muestra que hay inlining. Sin ella, en el modo de depuración, los resultados se invierten y la POO es más rápida:

Esta imagen insinúa que los compañeros están buscando un gato negro en una habitación oscura.

 
Renat:

...

El método virtual, en cambio, no puede ser recortado: siempre es llamado. Como resultado, en un caso sólo hay un bucle, y en el otro hay una llamada en el bucle.

...

Por cierto, también puede eliminar los bucles vacíos. Código:

void OnStart(){
   for(int i = 0; i < 1000000; i++)
      foo();
}

void foo(void){}

Puede reducirse a una simple:

void OnStart(){
   ;
}
 
Vinin:

Las pruebas vendrán del otro lado. O de nuevo sólo palabras.

En general, sólo me interesan los hechos.

Aunque ya sé que la POO es más lenta, pero proporciona comodidades bastante concretas

El lunes mostraré mediante un ejemplo de perfilado de un proyecto OOP real que su rendimiento en el límite tiende al rendimiento de las llamadas a funciones del sistema.
 
C-4:

Es una afirmación extraña. Estás tratando de resolver problemas de optimización a nivel de compilador y sin embargo no sabes cómo funciona.

Lo siento, has confundido algo, no trataba de optimizar el compilador. Si no entiendes lo que estaba haciendo, trata de releer este hilo desde el principio otra vez, pero con más atención, y también trata de no entrar en el off-topic inteligente.
 
Renat:
Sí, tenemos un interruptor con un salto directo sobre la mesa si hay suficientes elementos, como en los ejemplos.

Los ejemplos de este ejemplo toman la variante más sencilla, en la que los valores de las claves están en incrementos simples, por lo que el desplazamiento se calcula simplemente. Pero si tenemos tal variante:

case 10: ...

case 100: ... case 1000: ... case 1000000: ...

Aquí, según tengo entendido, el índice se define a través de la búsqueda binaria. ¿Tiene ambos métodos?