मुझे पता है कि जावा एक सुरक्षित भाषा है लेकिन जब मैट्रिक्स की गणना की आवश्यकता होती है, तो क्या मैं कुछ तेज़ी से कोशिश कर सकता हूं?जावा इंजेक्शन/जावा में असेंबली कोडिंग?
मैं सी ++, डिजिटल-मंगल कंपाइलर और एफएएसएम में __asm {} सीख रहा हूं। मैं जावा में ऐसा करना चाहता हूं। मैं कार्यों में असेंबली कोड कैसे रेखांकित कर सकता हूं? क्या यह भी संभव है?
कुछ इस तरह (एक vectorized पाश शाखाओं में बिना एक मूल्य के एक सरणी के सभी तत्वों को कड़ाई से बंद करना, सीपीयू की 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
vmovups %ymm1, (%rdi, %rdx, 4)
# TODO: unroll the loop a bit, and maybe use aligned loads/stores in the main loop
add $32, %rdx
cmp %rcx, %rdx
jb .Lloop # } while(idx < count)
);
System.out.println(var[0]);
मैं एक कोड-इंजेक्टर का उपयोग नहीं करना चाहते हैं। मैं इंटेल या AT & टी शैली x86 निर्देश देखना चाहता हूं।
आप ऐसा एएसएम लेखन (16-बिट रजिस्टर और 'div' बजाय एक' SHR अल के 4 से उपयोग करते हुए, 2'), [यह निश्चित रूप से है कर रहे हैं * नहीं * तेजी से क्या एक सी संकलक कर सकता होने जा रहा आप के लिए बनाते हैं।] (https://stackoverflow.com/questions/40354978/why-is-this-c-code-faster-than-my-hand-written-assembly-for-testing-the-collat/40355466# 40355466), तो आपको सी या सी ++ के साथ जेएनआई का उपयोग करना चाहिए। एएसएम केवल प्रदर्शन के लिए उपयोगी है यदि आप जानते हैं कि वर्तमान CPUs के माइक्रोआर्किटेक्चर के लिए कैसे ट्यून करें। यह एक उपयोगी सवाल है, लेकिन उदाहरण एक उदाहरण है कि अधिकांश लोगों को * एएसएम का उपयोग क्यों नहीं करना चाहिए। –
आप सही हैं। एक ही समय में दो चीजें। यदि मैं उस समय पर्याप्त अनुभव था तो मैं निर्देशों के उचित क्रम के साथ एक एवीएक्स डॉट उत्पाद की तरह कुछ जोड़ूंगा। –
आप कुछ आधुनिक उपयोग करने के लिए प्रश्न को संपादित कर सकते हैं। शायद बीएमआई 2 'पीडीएपी' की तरह, जिसमें जावा अंतर्निहित नहीं है। आदर्श रूप में आप कुछ ऐसी चीज के साथ आ सकते हैं जो आप आसानी से सी संकलक को आपके लिए उत्सर्जित नहीं कर सके। –