Javaが安全な言語であることは知っていますが、行列の計算が必要な場合、もっと速く何かを試すことができますか?
私はC++、Digital-Marsコンパイラ、FASMで__asm{}を学んでいます。Javaでも同じことをしたいです。関数にアセンブリコードをインライン化するにはどうすればよいですか?これも可能ですか?
このようなもの(CPUのAVXサポートを使用して、配列のすべての要素を分岐せずに値にクランプするベクトル化されたループ):
JavaAsmBlock(
# get pointers into registers somehow
# and tell Java which registers the asm clobbers somehow
vbroadcastss twenty_five(%rip), %ymm0
xor %edx,%edx
.Lloop: # do {
vmovups (%rsi, %rdx, 4), %ymm1
vcmpltps %ymm1, %ymm0, %ymm2
vblendvps %ymm2, %ymm0, %ymm1, %ymm1 # TODO: use vminps instead
vmovups %ymm1, (%rdi, %rdx, 4)
# TODO: unroll the loop a bit, and maybe handle unaligned output specially if that's common
add $32, %rdx
cmp %rcx, %rdx
jb .Lloop # } while(idx < count)
vzeroupper
);
System.out.println(var[0]);
コードインジェクターを使いたくありません。IntelまたはAT&Tスタイルのx86の説明を見たいです。