Loose-Info.com
Last Update 2026/09/03
TOP - 各種テスト - LLM - ローカルLLMの実測値比較 - コーディング(設定用パラメータ比較) - Granite 4.2 (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 granite parameters 29.3B context length 131072 embedding length 4096 quantization Q4_K_M Capabilities tools thinking completion Parameters temperature 1 top_p 0.95 num_ctx 131072

Granite 4.2 (GPU無) [実測結果一覧へ]

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

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

2026-08-26 total duration: 2h53m50.744014897s load duration: 102.500774ms prompt eval count: 299 token(s) prompt eval duration: 30.729079s prompt eval rate: 9.73 tokens/s eval count: 13211 token(s) eval duration: 2h53m19.908296s eval rate: 1.27 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 start > end の場合はNULL文字のみのメモリへのポインタを返す 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 == 整数2 ただし、整数1、整数2が共に0 (4) 整数1 < 整数2 ただし、整数1が負数 (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/ccN6Qjdk.o: in function `main': sample_test.c:(.text+0xa9): multiple definition of `main'; /tmp/ccRWduuo.o:sample_code.c:(.text+0x15e): 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.

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

2026-08-26 total duration: 1h30m24.725969855s load duration: 108.014595ms prompt eval count: 299 token(s) prompt eval duration: 469.966ms prompt eval rate: 636.22 tokens/s eval count: 8614 token(s) eval duration: 1h30m24.090716s eval rate: 1.59 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:36:9: warning: implicit declaration of function ‘memcpy’ [-Wimplicit-function-declaration] 36 | memcpy(p, buf, len); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:36:9: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch] 36 | memcpy(p, buf, len); | ^~~~~~ sample_code.c:36:9: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’ $ ./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=---; top_p=---; top_k=--

2026-08-26 total duration: 2h47m37.676528562s load duration: 11.01278421s prompt eval count: 299 token(s) prompt eval duration: 32.996678s prompt eval rate: 9.06 tokens/s eval count: 13084 token(s) eval duration: 2h46m53.663747s eval rate: 1.31 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/ccOq8NF8.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/cc5483DF.o:sample_code.c:(.text+0x1ab): 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.

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

2026-08-26 total duration: 1h48m55.758156052s load duration: 95.720309ms prompt eval count: 299 token(s) prompt eval duration: 465.664ms prompt eval rate: 642.09 tokens/s eval count: 9845 token(s) eval duration: 1h48m54.656099s eval rate: 1.51 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.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.

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

2026-08-26 total duration: 14m6.37490872s load duration: 10.999817147s prompt eval count: 308 token(s) prompt eval duration: 32.822313s prompt eval rate: 9.38 tokens/s eval count: 1662 token(s) eval duration: 13m22.549611s eval rate: 2.07 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/ccwGKSey.o: in function `main': sample_test.c:(.text+0x179): multiple definition of `main'; /tmp/cc2Tdzul.o:sample_code.c:(.text+0x269): 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 xxxxx ← 文字化け出力 $ vi sample_code.c ← 文字配列の書き込み位置の演算方法を修正 $ gcc -Wall -o sample_code sample_code.c $ 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 - . / / 1 2 3 ← 負数が記号化 $ vi sample_code.c ← 負数に関する対応コードの追加 $ gcc -Wall -o sample_code sample_code.c $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test Tests passed: 4/4

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

2026-08-26 total duration: 4m24.595812739s load duration: 98.878366ms prompt eval count: 308 token(s) prompt eval duration: 463.268ms prompt eval rate: 664.84 tokens/s eval count: 561 token(s) eval duration: 4m23.932556999s eval rate: 2.13 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:50:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 50 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:50:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 50 | strcpy(result, buffer); | ^~~~~~ sample_code.c:50:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 free(): invalid pointer Aborted (core dumped) $ vi sample_code.c ← 関数エラー時の戻り値をNULLに修正 $ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:51:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 51 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:51:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 51 | strcpy(result, buffer); | ^~~~~~ sample_code.c:51:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./sample_code 5 1 $

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

2026-08-26 total duration: 4m6.909164445s load duration: 121.910741ms prompt eval count: 308 token(s) prompt eval duration: 463.982ms prompt eval rate: 663.82 tokens/s eval count: 524 token(s) eval duration: 4m6.277394s eval rate: 2.13 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) mallocは使用しているが実質の文字列格納メモリの最大値は256バイト インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードの生成無し (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:28:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 28 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:28:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 28 | strcpy(result, buffer); | ^~~~~~ sample_code.c:28:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./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 free(): invalid pointer Aborted (core dumped) $ vi sample_code.c ← 関数エラー時の戻り値をNULLに修正 $ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:29:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 29 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:29:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 29 | strcpy(result, buffer); | ^~~~~~ sample_code.c:29:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./sample_code 5 1

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

2026-08-26 total duration: 2m40.618684465s load duration: 99.621469ms prompt eval count: 308 token(s) prompt eval duration: 463.217ms prompt eval rate: 664.92 tokens/s eval count: 342 token(s) eval duration: 2m40.009444s eval rate: 2.14 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) mallocは使用しているが実質の文字列格納メモリの最大値は256バイト インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードの生成無し (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:27:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:27:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:27:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./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

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

2026-08-26 total duration: 2h34m11.271394522s load duration: 9.993332218s prompt eval count: 299 token(s) prompt eval duration: 31.248428s prompt eval rate: 9.57 tokens/s eval count: 12413 token(s) eval duration: 2h33m30.026179s eval rate: 1.35 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 start > end の場合はNULL文字のみのメモリへのポインタを返す 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 > 整数2 (4) 整数1 < 整数2 ただし、整数1が負数 (5) 整数1 == 整数2 ただし、整数1、整数2が共に0 (注) 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 In file included from sample_test.c:3: sample_test.c: In function ‘main’: sample_test.c:13:12: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration] 13 | assert(strcmp(str, "1 2 3") == 0); | ^~~~~~ sample_test.c:4:1: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’ 3 | #include <assert.h> +++ |+#include <string.h> 4 | /bin/ld: /tmp/cckMTmyB.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccFdByMe.o:sample_code.c:(.text+0x2a1): 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 In file included from sample_test.c:3: sample_test.c: In function ‘main’: sample_test.c:13:12: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration] 13 | assert(strcmp(str, "1 2 3") == 0); | ^~~~~~ sample_test.c:4:1: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’ 3 | #include <assert.h> +++ |+#include <string.h> 4 | $ ./sample_code 1 5 1 2 3 4 5$ ./sample_code -3 3 -3 -2 -1 00 1 2 3$ vi sample_code.c ← 「0」の場合に数値が重複する不具合を修正 $ gcc -Wall -o sample_code sample_code.c $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c In file included from sample_test.c:3: sample_test.c: In function ‘main’: sample_test.c:13:12: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration] 13 | assert(strcmp(str, "1 2 3") == 0); | ^~~~~~ sample_test.c:4:1: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’ 3 | #include <assert.h> +++ |+#include <string.h> 4 | $ ./sample_code -3 3 -3 -2 -1 0 1 2 3$ ./sample_code 1 1 1$ ./sample_code 5 1 $ ./sample_test ← 成功の場合の出力無し $

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

2026-08-26 total duration: 4m45.663225938s load duration: 11.269292871s prompt eval count: 308 token(s) prompt eval duration: 33.064159s prompt eval rate: 9.32 tokens/s eval count: 516 token(s) eval duration: 4m1.326496s eval rate: 2.14 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:27:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:27:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:27:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./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 $

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

2026-08-26 total duration: 3m15.416326518s load duration: 108.020628ms prompt eval count: 308 token(s) prompt eval duration: 1.652912s prompt eval rate: 186.34 tokens/s eval count: 416 token(s) eval duration: 3m13.611256s eval rate: 2.15 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:27:5: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:27:5: warning: incompatible implicit declaration of built-in function ‘strcpy’ [-Wbuiltin-declaration-mismatch] 27 | strcpy(result, buffer); | ^~~~~~ sample_code.c:27:5: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ $ ./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 $

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

2026-08-26 total duration: 3m50.363003194s load duration: 115.313465ms prompt eval count: 308 token(s) prompt eval duration: 469.727ms prompt eval rate: 655.70 tokens/s eval count: 492 token(s) eval duration: 3m49.729156s eval rate: 2.14 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列用メモリはchar配列1024バイト固定 インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 ・テストコードの生成無し (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_output’: sample_code.c:18:12: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration] 18 | return strdup(buffer); | ^~~~~~ sample_code.c:18:12: warning: incompatible implicit declaration of built-in function ‘strdup’ [-Wbuiltin-declaration-mismatch] $ ./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 $

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

2026-08-26 total duration: 9m18.421741939s load duration: 105.896853ms prompt eval count: 308 token(s) prompt eval duration: 465.164ms prompt eval rate: 662.13 tokens/s eval count: 1182 token(s) eval duration: 9m17.806419s eval rate: 2.12 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:54:23: warning: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 54 | int pos = p + num_len; | ^ sample_code.c:56:17: error: invalid type argument of unary ‘*’ (have ‘int’) 56 | *pos-- = '0' + (n % 10); | ^~~~~~ sample_code.c:59:15: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 59 | p = pos; | ^ sample_code.c: In function ‘main’: sample_code.c:77:9: error: ‘argc’ undeclared (first use in this function) 77 | if (argc != 3) { | ^~~~ sample_code.c:77:9: note: each undeclared identifier is reported only once for each function it appears in sample_code.c:78:54: error: ‘argv’ undeclared (first use in this function) 78 | fprintf(stderr, "Usage: %s <start> <end>\n", argv[0]); | ^~~~ $ vi sample_code.c ← コマンドライン引数、ポインタ型に関する不具合を修正 $ gcc -Wall -o sample_code sample_code.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 0 $ vi sample_code.c ← 負数に関する不具合を修正 $ gcc -Wall -o sample_code sample_code.c $ ./sample_code -3 3 -3 -2 -1 0 $ vi sample_code.c ← 0に関する不具合を修正 $ gcc -Wall -o sample_code sample_code.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 $

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

2026-08-26 total duration: 7m34.82591403s load duration: 10.999619481s prompt eval count: 308 token(s) prompt eval duration: 32.669697s prompt eval rate: 9.43 tokens/s eval count: 875 token(s) eval duration: 6m51.153232s eval rate: 2.13 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘main’: sample_code.c:42:9: error: ‘argc’ undeclared (first use in this function) 42 | if (argc != 3) { | ^~~~ sample_code.c:42:9: note: each undeclared identifier is reported only once for each function it appears in sample_code.c:43:54: error: ‘argv’ undeclared (first use in this function) 43 | fprintf(stderr, "Usage: %s <start> <end>\n", argv[0]); | ^~~~ $ vi sample_code.c ← コマンドライン引数に関する不具合を修正 $ gcc -Wall -o sample_code sample_code.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 free(): invalid pointer Aborted (core dumped) $ vi sample_code.c ← 関数の戻り値に関する不具合を修正 $ gcc -Wall -o sample_code sample_code.c $ ./sample_code 5 1 $

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

2026-08-26 total duration: 7m51.174747997s load duration: 133.657223ms prompt eval count: 308 token(s) prompt eval duration: 1.653113s prompt eval rate: 186.32 tokens/s eval count: 996 token(s) eval duration: 7m49.326099s eval rate: 2.12 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列生成ではなく出力 ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード コード内にリダイレクトなどの処理無し 文字列生成関数の1種類のみのテスト実行 (1) 整数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/ccCIaLAr.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccnRoPPq.o:sample_code.c:(.text+0x64): 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 1 2 3 Failed to read from tmp file $ vi sample_test.c ← stdoutをファイルにリダイレクトする処理を追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_test $ ← 成功時は出力無し

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

2026-08-26 total duration: 2m55.837243494s load duration: 118.706706ms prompt eval count: 308 token(s) prompt eval duration: 1.653897s prompt eval rate: 186.23 tokens/s eval count: 375 token(s) eval duration: 2m54.009483s eval rate: 2.16 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列用メモリはchar配列1024バイト固定 インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードの生成無し (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c sample_code.c: In function ‘generate_range_string’: sample_code.c:19:9: warning: implicit declaration of function ‘memcpy’ [-Wimplicit-function-declaration] 19 | memcpy(buffer + len, num_str, num_len); | ^~~~~~ sample_code.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | sample_code.c:19:9: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch] 19 | memcpy(buffer + len, num_str, num_len); | ^~~~~~ sample_code.c:19:9: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’ sample_code.c:28:12: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration] 28 | return strdup(buffer); | ^~~~~~ sample_code.c:28:12: warning: incompatible implicit declaration of built-in function ‘strdup’ [-Wbuiltin-declaration-mismatch] $ ./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 $