es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Modificar 1024 es realmente más rápido que modificar 1023?

Mi colega me dijo que hacer una operación de módulo utilizando la potencia de 2 se optimizará mediante operaciones de bits y será más rápido que hacerlo con otros números. Y he verificado el ensamblaje, lo cual confirma su afirmación. Pero escribí un código de referencia en Golang y lo ejecuté con la versión 1.17 de Go. Parece que no hay mucha diferencia. ¿Por qué sucede esto y él tiene razón?

Aquí está el código en Golang:

package main

import (
    "fmt"
    "time"
)

const loop = 10000000000

func Mod1024() int {
    sum := 0
    for i := 0; i < loop; i++ {
        sum += i % 1024
    }
    return sum
}

func Mod1023() int {
    sum := 0
    for i := 0; i < loop; i++ {
        sum += i % 1023
    }
    return sum
}

func main() {
    start := time.Now()
    Mod1023()
    fmt.Println(time.Since(start).Microseconds())

    start = time.Now()
    Mod1024()
    fmt.Println(time.Since(start).Microseconds())
}

El resultado en mi computadora es:
2810668
2694136
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que tu colega tenga razón al afirmar que aplicar el módulo de la potencia de 2 puede optimizarse mediante operaciones de bits y ser más rápido que aplicar el módulo de otros números. Sin embargo, las diferencias en el tiempo de ejecución pueden no ser perceptibles en un punto de referencia como el que has escrito. Hay muchos factores que pueden influir en el tiempo de ejecución, como el hardware, el nivel de optimización del compilador y la forma en que se ha escrito el código.

    En tu punto de referencia, estás ejecutando cada función 10 mil millones de veces, lo cual puede llevar una cantidad significativa de tiempo. La diferencia en el tiempo de ejecución entre las dos funciones es inferior al 4% (2810668 frente a 2694136 microsegundos), lo cual puede no ser lo suficientemente significativo para sacar conclusiones. Para obtener resultados más precisos, puede que necesites ejecutar el punto de referencia varias veces y calcular un promedio.

    En resumen, tu colega puede tener razón al afirmar que aplicar el módulo de la potencia de 2 puede ser más rápido, pero el punto de referencia que has escrito puede no ser la mejor manera de demostrarlo. Puede que sea necesario realizar pruebas y análisis más rigurosos para poder sacar conclusiones concretas.

Comments are closed.