Título: Optimización de algoritmo de fuerza bruta Publicado por: kutcher en 2 Septiembre 2014, 22:30 pm Buenas, tengo el siguiente algoritmo:
Código
Mi intención es evitar el uso de pow porque esta consume demasiado recursos, lo que busco es la forma de representarlo con solo operaciones aritméticas .... alguna idea Saludos kutcher Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: MCKSys Argentina en 2 Septiembre 2014, 22:41 pm Hola!
Revisa este (http://stackoverflow.com/questions/18945317/fastest-pow-replacement-via-modified-exp-by-squaring-when-lower-powers-are-al) post. Saludos! Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: kutcher en 3 Septiembre 2014, 02:06 am Revisa este (http://stackoverflow.com/questions/18945317/fastest-pow-replacement-via-modified-exp-by-squaring-when-lower-powers-are-al) post. La verdad no entendí mucho, por otro lado hice una función pow que solo trabaja con enteros pensé que de esta manera podría ser mas rápida pero no: Código
Saludos kutcher Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: eferion en 3 Septiembre 2014, 08:16 am La verdad no entendí mucho, por otro lado hice una función pow que solo trabaja con enteros pensé que de esta manera podría ser mas rápida pero no: Código
Saludos kutcher La librería estándar ha sido programada y optimizada por gente bastante ducha tanto en matemáticas como en programación... es complicado sacar una versión que sea más eficiente (no es imposible pero...) En cualquier caso yo creo que puedes optimizar la función "arrastrando" el valor de "end", de esta forma sólo llamas a pow una vez durante la ejecución de la función. Código
Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: kutcher en 3 Septiembre 2014, 15:25 pm En cualquier caso yo creo que puedes optimizar la función "arrastrando" el valor de "end", de esta forma sólo llamas a pow una vez durante la ejecución de la función. Hola eferion probé lo que indicaste pero no funciona y ademas provoca que entre en un ciclo infinito .. ahora tengo otra pow pero mas optimizada que creo es mas rápida según noto es este: Código
Saludos kutcher Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: rir3760 en 3 Septiembre 2014, 19:29 pm Primero las recomendaciones:
1) Las conversiones explicitas al tipo long int no son necesarias ya que se realizan de forma automática, por ello hay que eliminarlas. 2) Los dos bucles while se pueden sustituir por bucles for para compactar el código fuente. 3) Puedes utilizar una sola vez la función pow justo antes del bucle externo, la actualización del valor de la variable "end" se debe realizar justo al final del mentado bucle. Con los cambios: Código Como no publicas el programa completo te toca a ti verificar que funcione correctamente (ya nos avisas si hubo algún resbalón). ---- Un ultimo comentario: si se trata de una solución de fuerza bruta la prioridad debe ser la claridad del código fuente, si esta fuera la eficiencia lo mejor es simplemente ... cambiar de algoritmo. Un saludo Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: kutcher en 3 Septiembre 2014, 19:56 pm Como no publicas el programa completo te toca a ti verificar que funcione correctamente (ya nos avisas si hubo algún resbalón). Hola rir3760 ahora si va bien en cuanto al código completo es el siguiente: Código
Solo le cambie lo del printf ya que considero que es mas lento que puts Saludos kutcher Título: Re: Optimización de algoritmo de fuerza bruta Publicado por: rir3760 en 4 Septiembre 2014, 05:27 am Solo le cambie lo del printf ya que considero que es mas lento que puts En ese caso debes agregar manualmente el carácter '\0' justo antes de la llamada a función (esa es la ventaja de printf):Código
Un saludo |