Скажем, узким местом моей Java-программы действительно являются некоторые жесткие петли, чтобы вычислить кучу векторных точечных продуктов. Да, я профилировал, да, это узкое место, да, это важно, да, что именно так алгоритм, да, я запустил Proguard для оптимизации байтового кода и т.д.
Работа - это, по сути, точечные произведения. Как и в, у меня есть два float[50]
, и мне нужно вычислить сумму попарных продуктов. Я знаю, что существуют наборы инструкций процессоров для выполнения таких операций быстро и навалом, например SSE или MMX.
Да, я могу, возможно, получить к ним доступ, написав собственный код в JNI. Вызов JNI оказывается довольно дорогим.
Я знаю, что вы не можете гарантировать, что JIT будет компилировать или не компилировать. Кто-нибудь слышал о генерации кода JIT, который использует эти инструкции? и если да, то что-нибудь о коде Java, который помогает сделать его компилируемым таким образом?
Вероятно, "нет"; стоит спросить.