¿Por qué el gráfico de tiempo de rendimiento de la función de Fibonacci no es uniforme?

Lee Yong-jun

Hay dos funciones que implementan la secuencia de Fibonacci. fibo()era de estilo recursivo y iterfibo()se implementó mediante un método circular. Comparé el tiempo de desempeño de las dos funciones.

import matplotlib.pyplot as plt
import time

# iteration style
def iterfibo(count):
    if count <= 1 :
        return count

    left, right = 0, 1

    for i in range(count - 1):
        temp = left + right
        left = right
        right = temp

    return temp

# recursion style
def fibo(n):
    if n <= 1:
        return n
    return fibo(n - 1) + fibo(n - 2)

length = [x for x in range(25)]

iterfibo_time = []
fibo_time = []

for i in length:
    # fibo's execution time
    ts = time.time()
    fibo(i)
    fibo_time.append(time.time() - ts)

    # iterfibo's execution time
    ts = time.time()
    iterfibo(i)
    iterfibo_time.append(time.time() - ts)

plt.plot(length, iterfibo_time)
plt.show()

Sin embargo, me preguntaba si el gráfico de iterfibo()no era una curva suave. Y en algunos casos, el tiempo de ejecución se redujo, no aumentó.

fibo() tiempo (recursivo): fibo_time.png

iterfibo() tiempo (iterativo): iterfibo_time.png

Entonces me pregunto por qué el gráfico toma esta forma.

Frank Puffer

Como ya se señaló en un comentario, los tiempos de cálculo de iterfibo()son demasiado pequeños para medirlos con precisión time(). Por lo tanto, las variaciones se deben simplemente a la inexactitud de la medición y no tienen sentido.

El paso alrededor de n = 26 podría deberse a un cambio de enteros de 16 a 32 bits. F (25) = 46368 se puede representar con 16 bits, mientras que F (27) = 75025 requiere números enteros de 32 bits.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

¿Por qué la complejidad de tiempo de la función de permutación es O (n!)

¿Por qué la escala de drawImage de lienzo no es uniforme?

¿Por qué el rendimiento de la función de valor de la tabla es mejor que la instrucción directa select?

Por qué el tiempo de espera de la conexión de JavaMail es demasiado largo

¿Por qué PhpStorm permite un tipo de retorno nulo en la función usando el rendimiento?

¿Por qué el rendimiento de un programa en ejecución mejora con el tiempo?

¿Por qué el recuento único en el gráfico de visualización de kibana es incorrecto?

¿Por qué Java no incluye la complejidad de tiempo / espacio de cada función en el javadoc?

¿Por qué el tiempo de ejecución de la misma definición de función dentro de una clase es más lento que 10 veces?

¿Qué significa la codificación de colores en el gráfico de red en el panel Línea de tiempo?

¿Por qué la llamada de función lleva tanto tiempo?

¿Por qué el rendimiento de la suma de bytes es tan impredecible?

¿Qué es mejor para el rendimiento al crear una función o una instancia de la función constructora?

La función de selección puede actualizar el parámetro de tiempo de espera en Linux. ¿Por qué es 'puede actualizar'?

¿Por qué no puedo actualizar la relación de aspecto en el gráfico de chartjs?

Tiempo de CPU o tiempo transcurrido: ¿qué significa realmente el rendimiento de la consulta SQL?

¿Por qué la función devuelve el resultado antes de tiempo?

Por qué el peor caso de la complejidad de tiempo de la tabla hast es O (n)

¿Por qué el bucle de secuencia de Python Fibonacci es más lento que la recursividad?

¿Por qué el bucle de secuencia de Python Fibonacci es más lento que la recursividad?

¿Por qué el gráfico de dispersión no muestra ejes?

¿Por qué el rendimiento de la multiplicación de 64 bits es comparable al de la multiplicación de 32 bits?

¿Por qué el rendimiento de la multiplicación de 64 bits es comparable al de la multiplicación de 32 bits?

¿Por qué cambia el tiempo de ejecución de esta llamada de función?

¿Por qué no se penaliza el rendimiento de la siguiente función al hacer crecer un objeto adicional?

¿Por qué el retorno de esta función de Haskell es diferente del retorno de la función definida?

Advertir por el argumento de la función que NO es una constante de tiempo de compilación

¿Por qué el comportamiento de la resta de caracteres es específico para la implementación?

¿Por qué mi solución es tan lenta y cómo puedo mejorar el rendimiento de la consulta?

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    uitableview delete button image in iOS

  3. 3

    Pandas의 CSV 파일을 Pandas 데이터 프레임으로 가져 오기

  4. 4

    El nombre 'HttpContext' no existe en el contexto actual en Razor

  5. 5

    Verilog : 입력 신호를 한 클럭 주기로 지연시키는 방법은 무엇입니까?

  6. 6

    WPF pleine largeur DataGridColumn sur la largeur de DataGrid

  7. 7

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  8. 8

    Python, Pandas para hacer coincidir el marco de datos e indicar los hallazgos de una lista

  9. 9

    No se puede trazar la barra doble, trazar la barra usando pyplot para ndarray

  10. 10

    2D 배열에 대한 Numpy 요소 별 평균 계산

  11. 11

    ¿Cómo formatear el valor mínimo y máximo de android-range-seek-bar?

  12. 12

    Problème avec le dessin d'un élément Qml avec des appels OpenGL bruts

  13. 13

    Enlace débil de iOS Framework: error de símbolos indefinidos

  14. 14

    desbordamiento: oculto no funciona al hacer zoom en un iframe de YouTube usando transformar

  15. 15

    Swift / Firebase : Facebook 사용자가 계정을 만들 때 Firebase 데이터베이스에 제대로 저장하려면 어떻게해야합니까?

  16. 16

    multiplica dos números negativos en c ++

  17. 17

    Pandas: suma filas de DataFrame para columnas dadas

  18. 18

    matplotlib로 그래프를 그리는 동안 커서 위치에서 날짜 / 시간을 볼 수 없습니다. "DateFormatter에서 x = 0 값을 찾았습니다"라는 오류가 발생합니다.

  19. 19

    UIButton textLabel with different fonts

  20. 20

    Error de la base de datos de Android Firebase: Permiso denegado al depurar en un teléfono

  21. 21

    Room compile problem - column references a foreign key but it is not part of an index

CalienteEtiquetas

Archivo