La mayor parte de NumPy está en C, pero una gran parte del código C es "repetitivo" para manejar todos los detalles sucios de la interfaz Python/C. Creo que la relación C vs. Python es alrededor de 50/50 ATM para NumPy.
No estoy muy familiarizado con los detalles de bajo nivel basados en vm, pero creo que el costo de la interfaz sería mayor debido a las restricciones impuestas sobre el jvm y el .clr. Una de las razones por las que Numpy es a menudo más rápido que entornos similares es la representación de la memoria y cómo las matrices se comparten/pasan entre las funciones. Mientras que la mayoría de los entornos (Matlab y R también creo) usan Copy-On-Write para pasar arreglos entre funciones, NumPy usa referencias. Pero hacerlo en, por ejemplo, la JVM sería difícil (debido a restricciones sobre cómo usar el puntero, etc.). Es factible (existe un puerto inicial de NumPy para Jython), pero no sé cómo resuelven este problema. Quizás C++/Cli lo haría más fácil, pero no tengo experiencia con ese entorno.
El código python de shootout (por ejemplo, http://shootout.alioth.debian.org/u32/benchmark.php?test=regexdna&lang=python&id=1) no utiliza numpy/scipy. – unutbu
No te olvides de Fortran. Python también juega muy bien con Fortran –
@ ~ unutbu Es desconcertante que esperas que el programa regex-dna use numpy. – igouy