Estoy estudiando gran O y me encontré con esto
function timesTwo(num) { return 2 * num } let result = timesTwo(5) // 10 let result2 = timesTwo(2000) // 4000entonces dice esto
Ahora, ¿cuál de estos crees que llevará más tiempo calcular? 2 * 5 o 2 * 2000?... Es solo una operación (una multiplicación). 20 * 2 billones toma tanto como 2 * 3. No importa el tamaño de la entrada, la función toma la misma cantidad de tiempo para calcularse.
¿Cómo es eso cierto? ¿Cómo funciona? me parece que 20 * 2 mil millones tomaría mucho más tiempo que 2 * 3
Para hacer las cosas más confusas, continúa diciendo esto.
function manyTimes(num) { let total = 4 * num return total * 3 }Ahora bien, no diríamos que esta función tiene un Gran O de 2, seguiría siendo un Gran O de 1 porque estamos mirando el panorama general (1 operación no tomará mucho más tiempo que 2 para un computadora para que podamos simplemente ignorarlo) . No importa lo que pongamos, el número de operaciones no aumentará en la función, es un tiempo constante.
¿Puede explicar el texto en negrita de arriba? Vale, 1 operación no es significativamente más larga que 2. Pero, ¿qué pasa con 1 en comparación con 20 000 operaciones?
Fuente donde leí esta información. Notación Big O en Javascript
Big O no se refiere exactamente a cuánto tiempo se tarda en procesar algo, sino a cómo crece la duración del proceso con N entradas. Las funciones lineales crecen más lentamente que las funciones exponenciales, lo que significa que Linear es más rápido de procesar en Big O.
Tu ejemplo aquí compara dos expresiones lineales, lo que significa que el crecimiento de ambas es el mismo. Sin embargo, diría que es incorrecto decir que toman el mismo tiempo, sino que crecen al mismo ritmo.
se trata del comportamiento de la cola con la entrada n extendiéndose hacia arriba hasta el infinito. solo nos preocupa cómo evoluciona la cola de la complejidad computacional en las etapas finales de esa cola, porque generalmente queremos construir algoritmos en mente para el peor de los casos. 20x2billion sigue siendo O(n) al igual que 2x3 sigue siendo 0(n)