FSharp ejecuta mi algoritmo más lento que Python

ace @ años, resolví un problema mediante programación dinámica:

https: //www.thanassis.space/fillupDVD.htm

La solución fue codificada en Python.

Como parte de la expansión de mis horizontes, recientemente comencé a aprender OCaml / F #. Qué mejor manera de probar las aguas que haciendo un puerto directo del código imperativo que escribí en Python a F #, y comenzando desde allí, avanzando en pasos hacia una solución de programación funcional.

Los resultados de este primer puerto directo ... son desconcertantes:

Bajo Python:

  bash$ time python fitToSize.py
  ....
  real    0m1.482s
  user    0m1.413s
  sys     0m0.067s

Bajo FSharp:

  bash$ time mono ./fitToSize.exe
  ....
  real    0m2.235s
  user    0m2.427s
  sys     0m0.063s

(en caso de que haya notado el "mono" anterior: también probé en Windows, con Visual Studio - misma velocidad).

Estoy ... perplejo, por decir lo menos. Python ejecuta código más rápido que F #? Un binario compilado, usando el tiempo de ejecución .NET, ejecuta MÁS LENTO que el código interpretado de Python?!?!

Sé sobre los costos de inicio de las máquinas virtuales (mono en este caso) y cómo los JIT mejoran las cosas para lenguajes como Python, pero aún así ... ¡esperaba una aceleración, no una desaceleración!

¿He hecho algo mal, tal vez?

He subido el código aquí:

https: //www.thanassis.space/fsharp.slower.than.python.tar.g

enga en cuenta que el código F # es más o menos una traducción directa, línea por línea del código de Python.

PD. Por supuesto, hay otras ganancias, p. la seguridad de tipo estático que ofrece F #, pero si la velocidad resultante de un algoritmo imperativo es peor con F # ... Estoy decepcionado, por decir lo menos.

EDITA: Acceso directo, según lo solicitado en los comentarios:

el código de Python:https: //gist.github.com/95069

el código FSharp:https: //gist.github.com/95069

Respuestas a la pregunta(3)

Su respuesta a la pregunta