Это больше о Node.JS, в котором используется двигатель V8. Это механизм JavaScript, который также используется для Google Chrome.V8 обнаруживает переменные int и обрабатывает их более эффективно?
Я слышал о том, что V8 работает очень быстро, не только для узла, но и для браузеров. Тем не менее, одна вещь, которую я замечаю о JavaScript, заключается в том, что типы не кодируются для переменных.
Для этого в Java вам понадобится переменная типа Object
для всего. Это было бы значительно менее эффективными в, например, for
петля:
for (var i = 0; i < array.length; i++) {}
Мой вопрос, как же V8 обрабатывать типы переменных? Знает ли он, что переменная i
всегда либо int
, либо long
? (Я вижу это как маловероятно, Beause, i++
имеет возможность конвертировать long
в double
.)
Или V8 обрабатывать вещи таким образом, что это не имеет значения? Я думаю, что некоторые простые примеры того, что создаст компилятор JIT, будут полезны. И Java, и JavaScript имеют JIT-компиляторы для преобразования кода в C.
Я не программист на C, но мне любопытно узнать, как обрабатываются типы, и если Java действительно эффективнее в этой области. (Да, я знаю, что I/O будет гораздо более значимым для большинства программ, чем обработка типа)
* «типы не кодируются для переменных» * - термин, который вы ищете здесь, * динамически типизирован * (в отличие от * статически типизированного *). См. [Система типов] (http://en.wikipedia.org/wiki/Type_system). – josh3736