Loose-Info.com
Last Update 2026/08/19
TOP - 各種テスト - LLM - ローカルLLMの実測値比較 - コーディング(設定用パラメータ比較) - Qwen3.8 (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 qwen35 parameters 27.3B context length 262144 embedding length 5120 quantization Q4_K_M requires 0.32.12 Capabilities completion vision tools thinking Projector architecture clip parameters 460.73M embedding length 1152 dimensions 5120 Parameters repeat_penalty 1 temperature 1 top_k 20 top_p 0.95 draft_num_predict 4 min_p 0 presence_penalty 0

Qwen3.8 (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-15 total duration: 10m46.956557263s load duration: 11.13546351s prompt eval count: 195 token(s) prompt eval duration: 18.608638s prompt eval rate: 10.48 tokens/s eval count: 2131 token(s) eval duration: 10m17.209502s eval rate: 3.45 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が共に0 (5) 整数1 < 整数2 ただし、整数1、整数2が共に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/ccR6pGTf.o: in function `main': sample_test.c:(.text+0xf9): multiple definition of `main'; /tmp/cc7ReI6r.o:sample_code.c:(.text+0x12e): 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: invalid range $ ./sample_test PASS: range 1 to 5 PASS: single value 3 PASS: range -2 to 2 PASS: single value 0 PASS: range 10 to 12 PASS: invalid range 5 to 1 returns NULL 6 passed, 0 failed

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

2026-08-15 total duration: 21m46.073525915s load duration: 203.45356ms prompt eval count: 195 token(s) prompt eval duration: 626.582ms prompt eval rate: 311.21 tokens/s eval count: 4441 token(s) eval duration: 21m45.160376s eval rate: 3.40 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 start > end の場合はNULL文字のみのメモリへのポインタを返す 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 テスト時にmain()除外のマクロを配置 ・テストコードを別途生成 sample_code.cをインクルード 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_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-15 total duration: 9m55.001190197s load duration: 219.642679ms prompt eval count: 195 token(s) prompt eval duration: 628.844ms prompt eval rate: 310.09 tokens/s eval count: 2193 token(s) eval duration: 9m54.016721s eval rate: 3.69 tokens/s (GPU無)

コード生成結果の概要

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

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

2026-08-15 total duration: 22m1.299624392s load duration: 219.815869ms prompt eval count: 195 token(s) prompt eval duration: 629.573ms prompt eval rate: 309.73 tokens/s eval count: 4262 token(s) eval duration: 22m0.344451s eval rate: 3.23 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -D UNIT_TEST -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..5 PASS: single value 3 PASS: range -2..2 All tests passed

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

2026-08-15 total duration: 14m54.817344252s load duration: 10.385229383s prompt eval count: 195 token(s) prompt eval duration: 18.182736s prompt eval rate: 10.72 tokens/s eval count: 2996 token(s) eval duration: 14m26.246396s eval rate: 3.46 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -D UNIT_TEST -Wall -o sample_test sample_code.c sample_test.c sample_test.c: In function ‘main’: sample_test.c:67:16: error: ‘EXIT_FAILURE’ undeclared (first use in this function) 67 | return EXIT_FAILURE; | ^~~~~~~~~~~~ sample_test.c:3:1: note: ‘EXIT_FAILURE’ is defined in header ‘<stdlib.h>’; did you forget to ‘#include <stdlib.h>’? 2 | #include <string.h> +++ |+#include <stdlib.h> 3 | sample_test.c:67:16: note: each undeclared identifier is reported only once for each function it appears in 67 | return EXIT_FAILURE; | ^~~~~~~~~~~~ sample_test.c:70:12: error: ‘EXIT_SUCCESS’ undeclared (first use in this function) 70 | return EXIT_SUCCESS; | ^~~~~~~~~~~~ sample_test.c:70:12: note: ‘EXIT_SUCCESS’ is defined in header ‘<stdlib.h>’; did you forget to ‘#include <stdlib.h>’? $ vi sample_test.c ← #include <stdlib.h> を追加 $ gcc -D UNIT_TEST -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..5 return value PASS: range 1..5 output PASS: single 3 return value PASS: single 3 output PASS: range -2..2 return value PASS: range -2..2 output PASS: range 5..1 return value PASS: range 5..1 output (empty) PASS: buffer too small return value PASS: NULL buffer return value 10 tests, 0 failures

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

2026-08-15 total duration: 15m35.339323909s load duration: 219.859509ms prompt eval count: 195 token(s) prompt eval duration: 622.414ms prompt eval rate: 313.30 tokens/s eval count: 3193 token(s) eval duration: 15m34.401875s eval rate: 3.42 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 メモリの確保はmain()側 文字列用配列の終端処理 インクリメント+空白区切りで文字列用メモリに書き込み ・main() 引数個数のチェック(エラー処理有) 文字列用メモリはchar配列4096バイト固定 生成文字列の標準出力への出力 テスト時にmain()除外のマクロを配置 ・テストコードを別途生成 sample_code.cをインクルード main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (5) 整数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_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

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

2026-08-15 total duration: 13m34.684184331s load duration: 204.452964ms prompt eval count: 195 token(s) prompt eval duration: 613.402ms prompt eval rate: 317.90 tokens/s eval count: 2902 token(s) eval duration: 13m33.749389s eval rate: 3.57 tokens/s (GPU無)

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test 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. $ vi sample_code.c ← メモリの初期化を追加 $ gcc -Wall -o sample_code sample_code.c $ ./sample_code 5 1 ← 正常出力となる空文字列 $

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

2026-08-15 total duration: 10m6.230310856s load duration: 212.800226ms prompt eval count: 195 token(s) prompt eval duration: 616.772ms prompt eval rate: 316.16 tokens/s eval count: 2105 token(s) eval duration: 10m5.28674s eval rate: 3.48 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 メモリの確保はmain()側 文字列用配列の初期化 引数値のチェック(エラー判定有) インクリメント+空白区切りで文字列用メモリに書き込み ・main() 引数個数のチェック(エラー処理有) 文字列用メモリはchar配列4096バイト固定 文字列生成関数の呼び出し 生成文字列の標準出力への出力 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を6種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (4) 整数1 > 整数2 (5) 整数1 < 整数2 ただし、整数1が負数(2) (6) 大きなサイズの生成文字列 (注) 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/ccktM1bI.o: in function `main': sample_test.c:(.text+0x8c): multiple definition of `main'; /tmp/cchcTQf9.o:sample_code.c:(.text+0xc1): 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..5 PASS: range 7..7 PASS: range -3..3 PASS: range 10..1 (empty) PASS: range -1..1 PASS: range 90..100 6 tests, 0 failures

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

2026-08-15 total duration: 11m44.375993187s load duration: 227.229957ms prompt eval count: 195 token(s) prompt eval duration: 617.419ms prompt eval rate: 315.83 tokens/s eval count: 2546 token(s) eval duration: 11m43.427629s eval rate: 3.62 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 メモリの確保はmain()側 文字列用配列の初期化 インクリメント+空白区切りで文字列用メモリに書き込み start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列用メモリはchar配列8192バイト固定 文字列生成関数の呼び出し 生成文字列の標準出力への出力 ・テストコードを別途生成 テスト対象関数の宣言 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/ccvklwYs.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccIzC4MR.o:sample_code.c:(.text+0x104): 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.

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

2026-08-15 total duration: 12m23.649505874s load duration: 202.862098ms prompt eval count: 195 token(s) prompt eval duration: 622.528ms prompt eval rate: 313.24 tokens/s eval count: 2585 token(s) eval duration: 12m22.716715s eval rate: 3.48 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 テスト時にmain()除外のマクロを配置 ・テストコードを別途生成 sample_code.cをインクルード 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_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-15 total duration: 17m6.161191176s load duration: 11.132865754s prompt eval count: 195 token(s) prompt eval duration: 18.969102s prompt eval rate: 10.28 tokens/s eval count: 3808 token(s) eval duration: 16m36.056269s eval rate: 3.82 tokens/s (GPU無)

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) インクリメント+空白区切りで文字列用メモリに書き込み start > end の場合はNULL文字のみのメモリへのポインタが戻り値となる ・main() 引数個数のチェック(エラー処理有) 文字列用メモリはchar配列4096バイト固定 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を5種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が0 (4) 整数1 < 整数2 ただし、整数1が負数 (5) メモリサイズが生成文字列長未満 (注) 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/cc63HxOf.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/cc2OQTXi.o:sample_code.c:(.text+0x223): 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: test_1_to_5 PASS: test_single PASS: test_0_to_3 PASS: test_negative PASS: test_buffer_too_small All tests PASSED