ホームページ >Java >&#&チュートリアル >FFM (外部関数およびメモリ) 標準ライブラリの例

FFM (外部関数およびメモリ) 標準ライブラリの例

Susan Sarandon
Susan Sarandonオリジナル
2024-11-14 13:36:021169ブラウズ

FFM (Foreign Function and Memory) Stdlib Example

FFM は JNI を置き換えようとする新しい API であり、jep がここにあります。基本的には、JVM の外部で関数を呼び出すか、JVM によって管理されないメモリにアクセスします。 FFM が通常の Java API に勝てるかどうかをテストしたかったのです。以下に、FFM と通常の Math.sin
を使用して数学 sin を実行する簡単なテストを示します。

import java.lang.foreign.FunctionDescriptor;
import java.lang.foreign.Linker;
import java.lang.foreign.MemorySegment;
import java.lang.foreign.SymbolLookup;
import java.lang.foreign.ValueLayout;

public class FFMSinTest {
    public static void main(String[] args) throws Throwable {
        Linker linker = Linker.nativeLinker();
        SymbolLookup stdlib = linker.defaultLookup();

        // Locate the "sin" function in the C math library
        MemorySegment sinAddress = stdlib.find("sin").orElseThrow();
        FunctionDescriptor descriptor = FunctionDescriptor.of(ValueLayout.JAVA_DOUBLE, ValueLayout.JAVA_DOUBLE);
        var sinHandle = linker.downcallHandle(sinAddress, descriptor);

        double angle = Math.PI / 4; // 45 degrees in radians

        // Timing Java's Math.sin()
        long javaStartTime = System.nanoTime();
        for (int i = 0; i 



<p>その結果は<br>
</p>

<pre class="brush:php;toolbar:false">Java Math.sin() took: 4.8677 ms
C sin (FFM) took: 78.9172 ms

私のラップトップでの教訓は、「JVM の外部への呼び出しは安価なプロセスではない」ということですか?

以上がFFM (外部関数およびメモリ) 標準ライブラリの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。