¿Puede el comstackdor de Kotlin optimizar las funciones de envoltura remota?

Soy nuevo en Kotlin, pero quiero intentar usarlo para el desarrollo de juegos, al less con Android con OpenGL ES 2.0 y HTML5 con WebGL (con el que estoy razonablemente familiar). No tener que tener versiones ligeramente diferentes de las classs / funciones de mi motor de renderizado para WebGL y GLES20 obviamente sería algo bueno, pero ¿hay una forma práctica de lograr esto en Kotlin sin gastos generales?

Creo que lo que tendré que hacer es escribir una class que implemente WebGLRenderingContextBase o un clon de ella (si es necesario un clon, solo puedo usar un delegado para la implementación de WebGL) en OpenGL ES 2.0, lleno de methods como este:

 override fun bindBuffer(target: Int, buffer, Int) { GLES20.glBindBuffer(target, buffer) } 

Escribiré un script para hacer la mayor parte del trabajo.

Mi pregunta es, ¿el comstackdor es lo suficientemente inteligente como para optimizar esos contenedores y usar GLES20.glBindBuffer, etc. directamente en el vtable de mi class, o el equivalente que tenga la JVM? Presumiblemente, la inline no puede ser de ninguna utilidad cuando se llama a un método reemplazado a través de una reference a una interfaz o class base.

El comstackdor de Kotlin no optimiza el bytecode en esta medida, y no necesita hacerlo: la propia JVM es bastante buena para optimizar el código.

Además, las funciones en inline no se diseñaron para ser una herramienta de performance en Kotlin, sino que se utilizan para el flujo de control no local y la transformación del código que no se puede lograr sin la incorporación.

En realidad, la JVM realiza muchas optimizaciones, evitando que los comstackdores tengan que optimizar demasiado el bytecode que generan. Y inline es una de las optimizaciones que la JVM puede hacer. (1) (2) (3)

Aunque ni comstackdores ni JVM pueden alinear methods nativos , debido a la naturaleza completamente diferente del código nativo.

El comstackdor de Kotlin, a su vez, realiza algunas optimizaciones locales que no afectan la estructura general del progtwig. Una razón más para hacerlo es la experiencia de debugging que es difícil de preservar con grandes optimizaciones. Para verificar las optimizaciones de Kotlin exactas, puede intentar deshabilitarlas agregando el -Xno-optimize a los arguments del comstackdor libre, luego examine el bytecode generado o realice algún benchmarking.