Para un proyecto en la universidad, tuvimos que implementar algunos algoritmos diferentes para calcular las clases de equivalencia cuando se les dio un conjunto de elementos y una colección de relaciones entre dichos elementos .(Dis) Demostrando que un algoritmo funciona más rápido que otro debido al lenguaje interno
Fuimos instruidos para implementar, entre otros, el algoritmo Union-Find y sus optimizaciones (Union by Depth, Size). Por accidente (haciendo algo que pensé que era necesario para la corrección del algoritmo) descubrí otra forma de optimizar el algoritmo.
No es tan rápido como Union By Depth, pero está cerca. No pude entender por qué fue tan rápido como lo fue, así que consulté a uno de los asistentes de la docencia que tampoco pudo descifrarlo.
El proyecto fue en Java y las estructuras de datos que utilicé fueron basadas en matrices sencillas de números enteros (el objeto, no el int
) Más tarde, en la evaluación del proyecto, me dijeron que es probable que tuviera algo que ver con 'Java almacenamiento en caché, pero no puedo encontrar nada en línea sobre cómo el almacenamiento en caché afectaría esto.
¿Cuál sería la mejor manera, sin calcular la complejidad del algoritmo, para demostrar o refutar que mi optimización es tan rápida debido a la forma de hacer las cosas de Java? Implementándolo en otro lenguaje (¿nivel inferior?) ¿Pero quién puede decir que el lenguaje no hará lo mismo?
espero sido claro,
gracias
Suena como un proyecto de investigación de un año para mí incluso para comenzar a entender el JIT y el GC y la arquitectura de hardware de la computadora y ... –