Loose-Info.com
Last Update 2026/08/24
TOP - 各種テスト - LLM - ローカルLLMの実測値比較 - コーディング(設定用パラメータ比較) - Ornith-1.5 (GPU無)

低スペック寄りのPCでローカルLLMを動作させた際の記録です。
LLM以外の仮想マシンなどが起動され、多少負荷がかかった状態で実行しています。
ベンチマークなどでLLMの性能を評価する内容ではありません。

検証用PC

OS

Debian GNU/Linux 12 (bookworm)

CPU

Intel(R) Core(TM) i5-14400F

GPU

GeForce RTX 3060 12GB

メモリ

DDR4 PC4-25600 32GB × 4

SSD

crucial P310 CT1000P310SSD8-JP


構築環境 : Docker + Ollama (特別な設定などは無い状態)

検証用プロンプト

``` ### 依頼内容 - コード生成 ### 指示 - C言語 - コード以外の出力は不要 - 中括弧スタイルはオールマン - テストコードも生成 - テストコードは別ファイル - 実行用ソースファイル名 : sample_code.c - テスト用ソースファイル名 : sample_test.c - 標準ヘッダ以外は使用しない - 戻り値はEXIT_SUCCESSを使用 - 関数はmain()の前で定義 ### コード仕様(sample_code.c) - コマンドラインから整数2つを取得 - [引数1]から[引数2]までをインクリメントして空白区切りで標準出力に出力 - 出力する文字列はmain()ではなく関数で生成 ### コード仕様(sample_test.c) - unity.hを使用しない ```

モデル詳細

Model architecture qwen35moe parameters 35.5B context length 262144 embedding length 2048 quantization Q4_K_M Capabilities tools thinking completion vision Projector architecture clip parameters 446.57M embedding length 1152 dimensions 2048

Ornith-1.5 (GPU無) [実測結果一覧へ]

(1) temperature=---; top_p=---; top_k=--
(2) temperature=0.70; top_p=0.7; top_k=--
(3) temperature=0.50; top_p=0.7; top_k=--
(4) temperature=0.30; top_p=0.7; top_k=--
(5) temperature=0.15; top_p=---; top_k=--
(6) temperature=0.15; top_p=0.7; top_k=--
(7) temperature=0.15; top_p=0.5; top_k=--
(8) temperature=0.15; top_p=0.4; top_k=--
(9) temperature=0.15; top_p=0.7; top_k=32
(10) temperature=0.15; top_p=0.7; top_k=16
(11) temperature=0.10; top_p=0.7; top_k=--

(1) temperature=---; top_p=---; top_k=--

2026-08-21 total duration: 16m9.249707015s load duration: 11.367304733s prompt eval count: 195 token(s) prompt eval duration: 2.610426s prompt eval rate: 74.70 tokens/s eval count: 10865 token(s) eval duration: 15m55.266887s eval rate: 11.37 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 > 整数2 (4) 整数1 < 整数2 ただし、整数1が負数 (5) 整数1 < 整数2 ただし、整数が2桁 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccPQiQdg.o: in function `main': sample_test.c:(.text+0x2ce): multiple definition of `main'; /tmp/ccbLLSeI.o:sample_code.c:(.text+0xfe): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 エラー: 範囲が不正、またはメモリ確保に失敗しました $ ./sample_test PASSED [allocate 1..5] (line 27) PASSED [content 1..5] (line 29) PASSED [allocate 7..7] (line 39) PASSED [content 7..7] (line 41) PASSED [NULL for 5..1] (line 51) PASSED [allocate -2..2] (line 59) PASSED [content -2..2] (line 61) PASSED [allocate 8..12] (line 71) PASSED [content 8..12] (line 73) 9 tests run, 0 failed

(2) temperature=0.70; top_p=0.7; top_k=--

2026-08-21 total duration: 10m7.9793656s load duration: 217.292137ms prompt eval count: 195 token(s) prompt eval duration: 119.09ms prompt eval rate: 1637.42 tokens/s eval count: 7518 token(s) eval duration: 10m7.583688s eval rate: 12.37 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を6種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 > 整数2 (4) 整数1 < 整数2 ただし、整数1が負数 (5) 整数1 < 整数2 ただし、整数1が0 (6) 整数1 < 整数2 ただし、整数2が2桁 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccGdfJAY.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/cckW4t3x.o:sample_code.c:(.text+0x10a): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test All tests passed.

(3) temperature=0.50; top_p=0.7; top_k=--

2026-08-21 total duration: 29m39.971452338s load duration: 224.348021ms prompt eval count: 195 token(s) prompt eval duration: 122.226ms prompt eval rate: 1595.41 tokens/s eval count: 16908 token(s) eval duration: 29m39.559621s eval rate: 9.50 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 < 整数2 ただし、整数1が0 (5) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cczfDs3C.o: in function `main': sample_test.c:(.text+0x29e): multiple definition of `main'; /tmp/ccYsU6fl.o:sample_code.c:(.text+0x16d): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 エラー: 出力文字列の生成に失敗しました $ ./sample_test [PASS] ascending 1 to 5 [PASS] single number [PASS] with negatives [PASS] starting from zero [PASS] descending returns NULL 5/5 tests passed.

(4) temperature=0.30; top_p=0.7; top_k=--

2026-08-21 total duration: 6m44.240049424s load duration: 232.555306ms prompt eval count: 195 token(s) prompt eval duration: 121.007ms prompt eval rate: 1611.48 tokens/s eval count: 5274 token(s) eval duration: 6m43.798387s eval rate: 13.06 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 < 整数2 ただし、整数1、整数2が共に2桁 (5) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccwaiouJ.o: in function `main': sample_test.c:(.text+0x87): multiple definition of `main'; /tmp/cc5qc1lX.o:sample_code.c:(.text+0x123): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test PASSED (line 18) PASSED (line 18) PASSED (line 18) PASSED (line 18) FAILED: expected [], got [xxx] (line 14) ← xxx部分は文字化け 5 tests, 1 failures $ ./sample_test ← 再実行 PASSED (line 18) PASSED (line 18) PASSED (line 18) PASSED (line 18) FAILED: expected [], got [yyy] (line 14) ← yyy部分は文字化け 5 tests, 1 failures $ vi sample_code.c ← メモリの初期化を追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_test PASSED (line 18) PASSED (line 18) PASSED (line 18) PASSED (line 18) PASSED (line 18) 5 tests, 0 failures

(5) temperature=0.15; top_p=---; top_k=--

2026-08-21 total duration: 11m43.227247538s load duration: 11.137656637s prompt eval count: 195 token(s) prompt eval duration: 2.59822s prompt eval rate: 75.05 tokens/s eval count: 8344 token(s) eval duration: 11m29.488497s eval rate: 12.10 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を6種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が0 (4) 整数1 < 整数2 ただし、整数1が負数 (5) 整数1 < 整数2 ただし、整数1、整数2が共に負数 (6) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cczckZBq.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccVYZwPK.o:sample_code.c:(.text+0x133): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 Invalid range: 5 to 1 $ ./sample_test [PASS] sample_test.c:42 [PASS] sample_test.c:43 [PASS] sample_test.c:44 [PASS] sample_test.c:45 [PASS] sample_test.c:46 [PASS] sample_test.c:47 All 6 tests passed.

(6) temperature=0.15; top_p=0.7; top_k=--

2026-08-21 total duration: 8m41.530871459s load duration: 236.421053ms prompt eval count: 195 token(s) prompt eval duration: 119.842ms prompt eval rate: 1627.14 tokens/s eval count: 6566 token(s) eval duration: 8m41.117585s eval rate: 12.60 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 メモリの確保はmain()側 インクリメント+空白区切りで文字列用メモリに書き込み start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列用メモリはchar配列256バイト固定 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccT62nmj.o: in function `main': sample_test.c:(.text+0x34d): multiple definition of `main'; /tmp/ccoH5N9h.o:sample_code.c:(.text+0xd5): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 Error: failed to generate output $ ./sample_test PASSED: "1 2 3 4 5" PASSED: "3" PASSED: "-2 -1 0 1 2" PASSED: "" All 4 tests passed.

(7) temperature=0.15; top_p=0.5; top_k=--

2026-08-21 total duration: 18m38.604356003s load duration: 227.418318ms prompt eval count: 195 token(s) prompt eval duration: 119.443ms prompt eval rate: 1632.58 tokens/s eval count: 12230 token(s) eval duration: 18m38.196856s eval rate: 10.94 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cc2JtV1j.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccYzv4fH.o:sample_code.c:(.text+0x105): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test 4/4 tests passed

(8) temperature=0.15; top_p=0.4; top_k=--

2026-08-21 total duration: 9m30.451404441s load duration: 11.883181377s prompt eval count: 195 token(s) prompt eval duration: 2.605027s prompt eval rate: 74.86 tokens/s eval count: 7067 token(s) eval duration: 9m15.95822s eval rate: 12.71 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 start > end の場合はNULL文字のみのメモリへのポインタを返す 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccv3cke3.o: in function `main': sample_test.c:(.text+0x358): multiple definition of `main'; /tmp/ccBWr6rL.o:sample_code.c:(.text+0x141): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test [PASS] range 1 to 5 [PASS] single value [PASS] negative to positive [PASS] start greater than end 4/4 tests passed.

(9) temperature=0.15; top_p=0.7; top_k=32

2026-08-21 total duration: 12m23.963999672s load duration: 231.012285ms prompt eval count: 195 token(s) prompt eval duration: 118.845ms prompt eval rate: 1640.79 tokens/s eval count: 8768 token(s) eval duration: 12m23.559819s eval rate: 11.79 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列長に応じたメモリの確保(calloc()による確保 + realloc()による拡張)(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 テスト時にmain()除外のマクロを配置 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 == 整数2 (2) 整数1 < 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし、整数1、整数2が共に0 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -D SAMPLE_CODE_NO_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test [PASS] 単一の数値 [PASS] 範囲の出力 [PASS] 負数を含む範囲 [PASS] 開始が終了より大きい [PASS] 0の範囲 5件中0件のテストが失敗しました

(10) temperature=0.15; top_p=0.7; top_k=16

2026-08-21 total duration: 6m13.548487685s load duration: 204.637724ms prompt eval count: 195 token(s) prompt eval duration: 120.41ms prompt eval rate: 1619.47 tokens/s eval count: 4921 token(s) eval duration: 6m13.154075s eval rate: 13.19 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルが関数のみオールマンスタイル ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を6種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし、整数1、整数2が共に2桁 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 == 整数2 (5) 整数1 == 整数2 ただし、整数1、整数2が共に0 (6) 整数1 > 整数2 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccO3NC1b.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccMqQzFV.o:sample_code.c:(.text+0x120): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 エラー: 出力文字列の生成に失敗しました $ ./sample_test All tests passed.

(11) temperature=0.10; top_p=0.7; top_k=--

2026-08-21 total duration: 7m38.751975728s load duration: 11.150695231s prompt eval count: 195 token(s) prompt eval duration: 2.634074s prompt eval rate: 74.03 tokens/s eval count: 5633 token(s) eval duration: 7m24.964553s eval rate: 12.66 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルが関数のみオールマンスタイル ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を6種類の引数の組み合わせでテスト実行 (1) 整数1 == 整数2 (2) 整数1 < 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 < 整数2 ただし、整数1が負数(2) (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cch2CIek.o: in function `main': sample_test.c:(.text+0x22f): multiple definition of `main'; /tmp/cchA788q.o:sample_code.c:(.text+0xeb): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 エラー: 範囲が無効です $ ./sample_test [PASS] single_number [PASS] increasing_range [PASS] negative_numbers [PASS] zero_included [PASS] decreasing_range_returns_null 5/5 tests passed