@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/17/000-language-benchmark-csharp-cpp-java-go/#article>
    schema:about <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    schema:mentions <https://comcomponent.com/knowledge/csharp/>, <https://comcomponent.com/knowledge/cpp/>, <https://comcomponent.com/knowledge/java-lang/>, <https://comcomponent.com/knowledge/golang/>, <https://comcomponent.com/knowledge/jit-compilation/>, <https://comcomponent.com/knowledge/ahead-of-time-compilation/>, <https://comcomponent.com/knowledge/tiered-compilation/>, <https://comcomponent.com/knowledge/gomaxprocs/>, <https://comcomponent.com/knowledge/cgo/>, <https://comcomponent.com/knowledge/benchmarkdotnet/>, <https://comcomponent.com/knowledge/jmh/>, <https://comcomponent.com/knowledge/go-benchmark-testing/>, <https://comcomponent.com/knowledge/google-benchmark/>, <https://comcomponent.com/knowledge/dead-code-elimination/>, <https://comcomponent.com/knowledge/checksum-verification/>, <https://comcomponent.com/knowledge/tail-latency-percentile/>, <https://comcomponent.com/knowledge/garbage-collection/>, <https://comcomponent.com/knowledge/warm-up-measurement/> .

<https://comcomponent.com/knowledge/cross-language-benchmarking/> a skos:Concept ;
    skos:prefLabel "言語横断ベンチマーク設計"@ja ;
    skos:definition "C#・C++・Java・Goのように異なる言語・ランタイムの実装間で、測定条件を揃えて実行速度を公平に比較するための設計手法。"@ja ;
    skos:altLabel "Cross-language benchmarking" ;
    skos:altLabel "言語間の性能比較"@ja ;
    ks:uses <https://comcomponent.com/knowledge/tail-latency-percentile/> ;
    ks:uses <https://comcomponent.com/knowledge/checksum-verification/> ;
    ks:uses <https://comcomponent.com/knowledge/jit-compilation/> ;
    ks:uses <https://comcomponent.com/knowledge/ahead-of-time-compilation/> .

<https://comcomponent.com/knowledge/csharp/> a skos:Concept ;
    skos:prefLabel "C#"@ja ;
    skos:definition "マイクロソフトが提供する、.NET上で動作するオブジェクト指向のプログラミング言語。"@ja ;
    skos:altLabel "C#言語"@ja ;
    ks:uses <https://comcomponent.com/knowledge/tiered-compilation/> ;
    ks:uses <https://comcomponent.com/knowledge/garbage-collection/> .

<https://comcomponent.com/knowledge/jit-compilation/> a skos:Concept ;
    skos:prefLabel "JIT(Just-In-Time)コンパイル"@ja ;
    skos:definition "実行時に中間コード(.NETのILやJavaのバイトコードなど)からネイティブコードを生成するコンパイル方式。"@ja ;
    skos:altLabel "実行時JIT"@ja .

<https://comcomponent.com/knowledge/java-lang/> a skos:Concept ;
    skos:prefLabel "Java"@ja ;
    skos:definition "JVM(Java仮想マシン)上でバイトコードを実行時にJITコンパイルして動作するオブジェクト指向プログラミング言語。"@ja ;
    skos:altLabel "Javaプログラミング言語"@ja ;
    ks:uses <https://comcomponent.com/knowledge/garbage-collection/> .

<https://comcomponent.com/knowledge/cpp/> a skos:Concept ;
    skos:prefLabel "C++"@ja ;
    skos:definition "コンパイル時にネイティブコードへ事前コンパイル(AOT)される、ISO標準のシステムプログラミング言語。"@ja ;
    skos:altLabel "C Plus Plus" ;
    ks:uses <https://comcomponent.com/knowledge/ahead-of-time-compilation/> .

<https://comcomponent.com/knowledge/ahead-of-time-compilation/> a skos:Concept ;
    skos:prefLabel "AOT(事前)コンパイル"@ja ;
    skos:definition "プログラムを実行する前に、ソースコードをあらかじめネイティブの機械語へ変換しておく方式。"@ja ;
    skos:altLabel "Ahead-of-Time Compilation" ;
    skos:altLabel "事前コンパイル"@ja .

<https://comcomponent.com/knowledge/golang/> a skos:Concept ;
    skos:prefLabel "Go"@ja ;
    skos:definition "Googleが開発した、実行前にネイティブの機械語へ事前コンパイルされるプログラミング言語。"@ja ;
    skos:altLabel "Golang" ;
    skos:altLabel "Go言語"@ja ;
    ks:uses <https://comcomponent.com/knowledge/ahead-of-time-compilation/> ;
    ks:uses <https://comcomponent.com/knowledge/gomaxprocs/> ;
    ks:uses <https://comcomponent.com/knowledge/garbage-collection/> .

<https://comcomponent.com/knowledge/tiered-compilation/> a skos:Concept ;
    skos:prefLabel "Tiered Compilation"@ja ;
    skos:definition ".NETのJITが、まず素早く生成した層のコードで実行し、よく呼ばれるメソッドだけ後から最適化し直す2段階のコンパイル方式。"@ja ;
    skos:altLabel "階層化コンパイル"@ja .

<https://comcomponent.com/knowledge/gomaxprocs/> a skos:Concept ;
    skos:prefLabel "GOMAXPROCS"@ja ;
    skos:definition "Goのランタイムが、Goのコードを同時に実行できるOSスレッド数の上限を設定する仕組み。"@ja .

<https://comcomponent.com/knowledge/cgo/> a skos:Concept ;
    skos:prefLabel "cgo"@ja ;
    skos:definition "GoのコードからCのコードを呼び出せるようにするGoの仕組み。有効にすると呼び出しコストやビルド条件が変わる。"@ja .

<https://comcomponent.com/knowledge/benchmarkdotnet/> a skos:Concept ;
    skos:prefLabel "BenchmarkDotNet"@ja ;
    skos:definition "C#(.NET)向けの、ウォームアップや統計処理を自動で行うマイクロベンチマークライブラリ。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/warm-up-measurement/> .

<https://comcomponent.com/knowledge/jmh/> a skos:Concept ;
    skos:prefLabel "JMH(Java Microbenchmark Harness)"@ja ;
    skos:definition "OpenJDKが提供する、Java向けのマイクロベンチマークを作成・実行するためのハーネス。"@ja ;
    skos:altLabel "Java Microbenchmark Harness" ;
    ks:uses <https://comcomponent.com/knowledge/warm-up-measurement/> .

<https://comcomponent.com/knowledge/go-benchmark-testing/> a skos:Concept ;
    skos:prefLabel "go test -bench と benchstat"@ja ;
    skos:definition "Go標準のtestingパッケージが提供するベンチマーク実行機能(go test -bench)と、その結果を統計的に比較するbenchstatツールの組み合わせ。"@ja ;
    skos:altLabel "Go testing package benchmark" ;
    skos:altLabel "benchstat" .

<https://comcomponent.com/knowledge/google-benchmark/> a skos:Concept ;
    skos:prefLabel "Google Benchmark"@ja ;
    skos:definition "Googleが提供する、C++向けのマイクロベンチマークライブラリ。"@ja ;
    skos:altLabel "Google Benchmark library" .

<https://comcomponent.com/knowledge/warm-up-measurement/> a skos:Concept ;
    skos:prefLabel "ウォームアップ後の安定状態計測(warm)"@ja ;
    skos:definition "プロセス起動直後を含むcoldな状態と区別して、数回の実行を経て安定した後の状態だけを対象に行う性能測定。"@ja ;
    skos:altLabel "Warm-up measurement" ;
    skos:altLabel "warm state" .

<https://comcomponent.com/knowledge/dead-code-elimination/> a skos:Concept ;
    skos:prefLabel "デッドコード除去(最適化による処理の消滅)"@ja ;
    skos:definition "コンパイラが、結果が使用されないと判断した計算やコードを最適化によって丸ごと取り除いてしまうこと。"@ja ;
    skos:altLabel "Dead Code Elimination" ;
    skos:altLabel "最適化による処理消去"@ja .

<https://comcomponent.com/knowledge/checksum-verification/> a skos:Concept ;
    skos:prefLabel "checksumによる正しさ確認"@ja ;
    skos:definition "比較対象の全実装が同じ入力から同じ結果(checksum)を返すことを確認する、速度比較に先立つ検証手順。"@ja ;
    skos:altLabel "正しさ確認"@ja ;
    skos:altLabel "結果検証"@ja ;
    ks:prevents <https://comcomponent.com/knowledge/dead-code-elimination/> .

<https://comcomponent.com/knowledge/tail-latency-percentile/> a skos:Concept ;
    skos:prefLabel "テールレイテンシのパーセンタイル(p95/p99)"@ja ;
    skos:definition "全実行を速い順に並べたときの95%地点・99%地点の値で、平均には表れにくい遅い応答の分布を示す指標。"@ja ;
    skos:altLabel "p95" ;
    skos:altLabel "p99" ;
    skos:altLabel "Tail Latency" .

<https://comcomponent.com/knowledge/garbage-collection/> a skos:Concept ;
    skos:prefLabel "ガベージコレクション(GC)"@ja ;
    skos:definition "プログラムが使わなくなったメモリ上のオブジェクトを自動的に検出し、解放するランタイムの仕組み。"@ja ;
    skos:altLabel "Garbage Collection" ;
    skos:altLabel "GC" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/csharp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/jit-compilation/> ;
    schema:description "JIT前提の.NETランタイムで実行する場合、C#(.NET)はCILを実行時にJITコンパイラでネイティブコードへ変換しながら実行する。Native AOTで発行した場合は事前コンパイルされ実行時のJITは使われない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/standard/managed-execution-process> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/java-lang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/jit-compilation/> ;
    schema:description "HotSpot VMのようなJIT前提の実行環境では、Javaはバイトコードを実行時にJITコンパイルする。native-imageなどで事前コンパイルした場合は当てはまらない"@ja ;
    ks:evidence <https://docs.oracle.com/en/java/javase/21/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ahead-of-time-compilation/> ;
    schema:description "C++はコンパイラが実行前にソースコードをネイティブの実行ファイルまで変換する事前コンパイル方式を取る。"@ja ;
    ks:evidence <https://learn.microsoft.com/cpp/build/reference/compiler-options> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/golang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ahead-of-time-compilation/> ;
    schema:description "Goのプログラムは実行前にネイティブの機械語へコンパイルされ、JITを持たない。"@ja ;
    ks:evidence <https://go.dev/doc/faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/csharp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tiered-compilation/> ;
    schema:description ".NETのJITは、まず素早くコンパイルする層で実行し、よく呼ばれるメソッドだけ後から最適化し直すTiered Compilationを既定で備える。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/runtime-config/compilation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/golang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/gomaxprocs/> ;
    schema:description "GoランタイムはGOMAXPROCSでGoコードを同時実行するOSスレッド数の上限を制御する。"@ja ;
    ks:evidence <https://pkg.go.dev/runtime> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/golang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cgo/> ;
    schema:description "CのコードをGoから呼び出す場合に限り、GoはcgoによってCのコードを呼び出せるが、有効にすると呼び出しコストやビルド条件が変わる。"@ja ;
    ks:evidence <https://pkg.go.dev/cmd/cgo> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/csharp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/benchmarkdotnet/> ;
    schema:description "C#で言語内マイクロベンチマークを書く場合には、BenchmarkDotNetを使う。"@ja ;
    ks:evidence <https://benchmarkdotnet.org/articles/guides/getting-started.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/java-lang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/jmh/> ;
    schema:description "Javaで言語内マイクロベンチマークを書く場合には、OpenJDKのJMHを使う。"@ja ;
    ks:evidence <https://openjdk.org/projects/code-tools/jmh/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/golang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/go-benchmark-testing/> ;
    schema:description "Goで言語内ベンチマークを書く場合には、testingパッケージのgo test -benchとbenchstatを使う。"@ja ;
    ks:evidence <https://pkg.go.dev/testing> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/google-benchmark/> ;
    schema:description "C++で言語内マイクロベンチマークを書く場合には、Google Benchmarkを使う。"@ja ;
    ks:evidence <https://google.github.io/benchmark/user_guide.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/benchmarkdotnet/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/warm-up-measurement/> ;
    schema:description "BenchmarkDotNetは複数回のイテレーションとウォームアップを経て安定した測定値を得る仕組みを標準で備える。"@ja ;
    ks:evidence <https://benchmarkdotnet.org/articles/guides/getting-started.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jmh/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/warm-up-measurement/> ;
    schema:description "JMHは@Warmupアノテーションでウォームアップの反復回数と時間を明示的に指定する仕組みを持つ。"@ja ;
    ks:evidence <https://openjdk.org/projects/code-tools/jmh/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/google-benchmark/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/dead-code-elimination/> ;
    schema:description "Google BenchmarkのDoNotOptimize/ClobberMemoryのような最適化抑止の仕組みで結果を消費させた場合に限り、コンパイラが未使用と判断した計算を消し去ることを防げる。単に使わないローカル変数へ結果を入れるだけでは消される"@ja ;
    ks:evidence <https://google.github.io/benchmark/user_guide.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpp/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dead-code-elimination/> ;
    schema:description "C++の最適化コンパイラは、計算結果が使用されないと判断すると、その処理自体を丸ごと消してしまうことがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/cpp/build/reference/compiler-options> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/checksum-verification/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/dead-code-elimination/> ;
    schema:description "計算結果をchecksumとして出力・使用させることで、コンパイラによる最適化除去を防ぐ。"@ja ;
    ks:evidence <https://google.github.io/benchmark/user_guide.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tail-latency-percentile/> ;
    schema:description "分布の評価には平均だけでなくp95/p99のようなテールレイテンシのパーセンタイルを使う。"@ja ;
    ks:evidence <https://sre.google/sre-book/monitoring-distributed-systems/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/csharp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/garbage-collection/> ;
    schema:description ".NETはガベージコレクターがオブジェクトの割り当てと解放を管理する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/standard/garbage-collection/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/java-lang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/garbage-collection/> ;
    schema:description "JavaはHotSpot VMのガベージコレクション方式でメモリのライフサイクルを管理する。"@ja ;
    ks:evidence <https://docs.oracle.com/en/java/javase/21/gctuning/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/golang/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/garbage-collection/> ;
    schema:description "Goランタイムはトレーシング方式のガベージコレクターでヒープを管理する。"@ja ;
    ks:evidence <https://go.dev/doc/gc-guide> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/warm-up-measurement/> ;
    schema:description "JITの影響を受けるC#やJavaを含む比較では、ウォームアップ後の安定状態を初回実行と区別して計測することが前提になる。"@ja ;
    ks:evidence <https://benchmarkdotnet.org/articles/guides/getting-started.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/checksum-verification/> ;
    schema:description "比較対象の全実装が同じ入力から同じ結果(checksum)を返すことを確認してから速度を比較する。"@ja ;
    ks:evidence <https://google.github.io/benchmark/user_guide.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/jit-compilation/> ;
    schema:description "C#とJavaはJITの影響を受けるため、比較設計はJITの扱いを踏まえる必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/standard/managed-execution-process> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cross-language-benchmarking/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ahead-of-time-compilation/> ;
    schema:description "C++とGoは通常事前コンパイル済みであり、これがJIT言語との比較設計上の違いを生む。"@ja ;
    ks:evidence <https://go.dev/doc/faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
