Preguntas etiquetadas 'compilación-optimización'

La optimización del compilador implica adaptar el compilador para reducir el tiempo de ejecución o el tamaño de un objeto, o ambos. Esto se puede hacer usando argumentos del compilador (por ejemplo, CFLAGS, LDFLAGS), complementos del compilador (por ejemplo, DEHYDRA), o cambios directos al compilador (como cambiar el código fuente).
10
respuestas

¿Por qué es que en ciclos separados los suplementos de estigma son mucho más rápidos que en el ciclo combinado?

Supongamos que a1, b1, c1 y d1 apuntan a la memoria del montón, y mi código numérico tiene el siguiente bucle principal. const int n = 100000; para (int j = 0; j <n; j ++) {a1 [j] + = b1 [j]; c1 [j] + = d1 [j]; } Este ciclo se realiza 10.000 veces a ...
fijado el 17 de diciembre '11 a las 23:40
12
respuestas

¿Por qué GCC no está optimizando a * a * a * a * a * a * (a * a * a) * (a * a * a)?

Estoy haciendo alguna optimización numérica en una aplicación científica. Noté que GCC optimiza la llamada a pow (a, 2), compilándola en a * a, pero la llamada a pow (a, 6) no está optimizada y en realidad llamará a la función de biblioteca pow, lo que ralentiza significativamente la producción ...
se establece el 21 de junio de 2011 a las 21:49
10
respuestas

Reemplazar el contador de bucle de 32 bits con valores de 64 bits conduce a desviaciones de rendimiento increíbles

Estaba buscando la forma más rápida de hacer popcount de grandes arreglos de datos. Me encontré con un efecto muy extraño: cambiar la variable de bucle de unsigned a uint64_t resultó en una reducción del 50% en el rendimiento en mi PC. Punto de referencia #incluir ...
set 01 ago. '14 a las 13:33
9
respuestas

Beta rápida: arrays de clasificación

Implementé el algoritmo en Swift Beta y noté que el rendimiento era muy malo. Examinando más profundamente, me di cuenta de que uno de los cuellos de botella es algo tan simple como ordenar matrices. La parte correspondiente está aquí: let n = 1000000 var ...
se establece 08 de junio de 14 a 2:53
3
respuestas

¿Por qué usamos la palabra clave volátil en C ++?

Posible duplicado: C ++: ¿cuándo una palabra clave volátil alguna vez te ayudó? Nunca lo he usado, pero me pregunto por qué la gente lo usa. Que esta haciendo el Estaba buscando un foro, lo encontré solo en C # o en Java.
fijado el 14 de diciembre '10 a las 12:14
2
respuestas

¿Qué es una operación de en C?

#include <stdio.h> volatile int i; int main () {int c; para (i = 0; i <3; i ++) {c = i i; printf ("% d \ n", c); } devuelve 0; } La salida del programa anterior, compilado usando ...
fijado el 19 de diciembre '12 a las 9:48
3
respuestas

¿Por qué GCC genera una construcción tan radicalmente diferente para casi el mismo código C?

Al escribir la función ftol optimizada, encontré un comportamiento muy extraño en GCC 4.6.1. Permítame mostrarle primero el código (para mayor claridad, noté las diferencias): fast_trunc_one, C: int fast_trunc_one (int i) {int mantissa, exponent, sign, r; ...
fijado el 20 de abril '12 a las 19:59
10
respuestas

¿Cómo compilar Tensorflow con las instrucciones SSE4.2 y AVX?

Este es un mensaje que se recibe al ejecutar un script para verificar si Tensorflow funciona: tensorflow / stream_executor / dso_loader.cc: 125] abrió la biblioteca CUDA libcublas.so.8.0 localmente I tensorflow / stream_executor / dso_loader.cc: 125] successf .. .
fijado el 23 de diciembre '16 a las 2:21
2
respuestas

Límites de tipo nat en sin forma

En el formato sin forma, el tipo Nat es una forma de codificar números naturales en el nivel de tipo. Esto se usa, por ejemplo, para listas de tamaño fijo. Incluso puede realizar cálculos en el nivel de tipo, por ejemplo. añadir la lista de elementos N ...
establecido el 23 de enero '14 a las 2:15
5
respuestas

¿Por qué el optimizador GCC 6 mejorado rompe el código práctico de C ++?

GCC 6 tiene una nueva función de optimización: se supone que esto siempre es distinto de cero y se optimiza en función de esto. La difusión de un rango de valores ahora asume que este puntero de las funciones miembro de C ++ no es cero. Esto elimina ...
establecido el 27 de abril '16 a las 5:45 pm
2
respuestas

¿Por qué el compilador optimiza mejor las lambdas que las funciones simples?

En su libro The C ++ Standard Library (Segunda edición), Nikolay Josuttis sostiene que el compilador optimiza mejor las lambdas que las funciones simples. Además, los compiladores de C ++ optimizan las lambdas mejor que las funciones normales. (Países ...
set 05 dic '12 a las 14:38
5
respuestas

¿Cómo ver qué banderas -march = native se activarán?

Compilo mi aplicación C ++ usando GCC 4.3. En lugar de seleccionar manualmente los indicadores de optimización, uso -march = native, que en teoría debería agregar todos los indicadores de optimización aplicables al hardware que compilé ...
set 29 de marzo de 2011 a las 12:14
3
respuestas

El uso de este puntero provoca una extraña desoptimización en el ciclo de calor.

Recientemente, me encontré con una extraña des-optimización (o más bien, una oportunidad de optimización perdida). Considere esta función para descomprimir eficientemente matrices de enteros de tres bits en enteros de 8 bits. Desempaqueta 16 ints en cada iteración del c ...
establecer 10 oct. 14 a las 11:38
11
respuestas

La efectividad del retorno temprano a la función.

Esta es una situación que a menudo veo como un programador inexperto, y estoy interesado, en particular, en un proyecto ambicioso y rápido que intento optimizar. Para los lenguajes principales tipo C (C, objC, C ++, Java, C #, etc.) y sus compilaciones habituales ...
fijado el 25 de octubre. '11 a las 7:26
6
respuestas

¿Por qué no puede (o no) el compilador optimizar un ciclo predecible de agregar a la multiplicación?

Esta es una pregunta que me vino a la mente cuando Mysticial leyó la brillante respuesta a la pregunta: ¿por qué es más rápido procesar una matriz ordenada que una matriz sin clasificar? Contexto para los tipos involucrados: const unsigned arraySize = 32768; int data [arrayS ...
se establece el 30 de junio de '12 a las 20:48