Gooo Source Assembly - kimjooyoon/meta-ontology-go GitHub Wiki
Gooo ์ ์ธ ์์ ๋ณธ๋ฌธ ์กฐ๋ฆฝ ์๋ ์ ๊ธฐ
2026-10-06: ์๋ก ๋ค๋ฅธ ํ์ ์ ๋ณธ๋ฌธ ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ
PR #1267์์
source_fill์ ๊ฐ ๊ตฌ๋ฉ์ด ์์ ์ ํ๋ณด ๋ฌธ๋ฒ์ ์ ์ธํ ์ ์๊ฒ ํ์ต๋๋ค.
์กฐ๊ฑด๊ณผ ์ ์ ๋ฐํ๊ฐ์ฒ๋ผ ์๋ก ๋ค๋ฅธ ํ์
์ ํํ์ ํจ๊ป ์กฐ๋ฆฝํ ์ ์์ต๋๋ค.
derive assignments max_candidates "16" {
hole "condition" grammar "integer-predicate/v1" max_expressions "8"
hole "yes" grammar "integer-offset-constant/v1" max_expressions "2"
}
integer-predicate/v1์ true, false์ ํ๋ จ ์
๋ ฅ๊ฐ์ ๋ํ ๋น๊ต ํ๋ณด๋ฅผ
๋ง๋ญ๋๋ค. integer-offset-constant/v1์ ์
๋ ฅ๊ฐ ์ฃผ๋ณ์ ์ ์ ํํ์์ ๋ง๋ญ๋๋ค.
์ปดํ์ผ๋ฌ๋ ํ๋ณด๋ฅผ ๋ชจ๋ ์ฐ๊ฒฐํ ๋ค ํ์
๊ณผ ์ ์ธ๋ ์ฌ๋ก๋ฅผ ํ์ธํฉ๋๋ค. ๋ชจ๋ธ์
์ด ์์ฑ ํ๋ณด์์ ์ ํํ๊ณ , ๋ชจ๋ธ์ด ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉด ๊ฒฐ์ ๋ก ์ ์ ํ์ด ์ ์ง๋ฉ๋๋ค.
์ฌํ ๊ฐ๋ฅํ ์กฐ๊ฑด๋ถ ์์ ๋
์ธ ์ ์ธ ์ฌ๋ก๋ฅผ ๋ชจ๋ ๋ง์ท์ต๋๋ค. ์กฐ๊ฑด ๋ฌธ๋ฒ ํ๋ณด๋ ์ผ๋ถ๋ง ์ด๊ฑฐํ์ผ๋ฏ๋ก
์์ ์ฑ ์์์ฆ์ ๋ฌธ๋ฒ ๋ฒ์๋ฅผ PROGRESS๋ก ๊ธฐ๋กํฉ๋๋ค. ์ด๋ ์ ์ฒด ์ ์ ๋ฒ์์
๋ํ ๋ณด์ฆ์ด ์๋๋๋ค. ๋ฌธ๋ฒยท์งํยทํ๊ณ๋ ์ปดํ์ผ๋ฌ ๋ฌธ์์,
์ธ์ด์ ๋ ๋์ ๋ฐฉํฅ์ ์ฐ๊ตฌ ๋ฐ ๋ค์ ๋จ๊ณ์ ์์ต๋๋ค.
PR #1267์ ํ์ ์ฌ์ฏ CI ์ฒดํฌ ํ dev์ ๋ณํฉ๋๊ณ , ์ ํํ ํธ๋ฆฌ ์ค๋
์ท PR
#1268๋ก main์
๋ฐ์๋์ต๋๋ค. ์ด ์กฐ๋ฆฝ ๊ฒฝ๋ก์ ์ด๋ฒ ์์ ์คํ์ ๊ฒฐ์ ๋ก ์ ์ด์๊ณ , ์ค์ Laya ์๋ต
์๊ฐ์ ์ธก์ ํ์ง ์์์ต๋๋ค.
์์ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๊ฐ๋ฐ์ ๋ค์ ์ฐ๊ธฐ
๊ฐ๋ฐ #1217์ CI์ ๋
๋ฆฝ
์ฆ๊ฑฐ ํ์ธ ํ ๋ณํฉํ์ต๋๋ค. main #1218์ด
๊ฐ์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ PR์
๋๋ค. main f62eb5f0๋ก CLIยท์คํ๊ธฐ๋ฅผ ํจ๊ป ์ค์นํ๊ณ
CI37190298986์ ํ์ ์ฌ์ฏ ๊ฒ์ฌยท์ ์ฒด ์คํ๊ณผ ๋
๋ฆฝ ์ฆ๊ฑฐ๊ฐ ๋ชจ๋ PASS์์ต๋๋ค.
์์ฑํ Gooo ๋ณธ๋ฌธ์ ๋ค์ ์ฌ์ฉํ ์ ์๋
์ฒดํฌํฌ์ธํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด์ ์๋ ์ ํ๋
๋ณธ๋ฌธ์ ์๋ณธ์ ๋ฃ์ผ๋ฉด ์ง์ญ๊ฐ์ ๋์ ์ด๋ฆ๊ณผ ์์น๊ฐ ์ด๊ธ๋ ๋ค์ ์์ฑ์ด ์คํจํ
์ ์์์ต๋๋ค. ์ด์ ์์ ๋ณธ๋ฌธ baseline, ์ ํํ ๊ฒฝ๋ก picked, ํ์ฌ ์คํํ
๋ณธ๋ฌธ computes๋ฅผ ํจ๊ป ๋ณด๊ดํฉ๋๋ค. ๊ธฐ์ค ์ง๋์ ๊ทธ ์ง๋์์ ๊ณ ๋ฅธ ๊ฒฝ๋ก๋ฅผ
์์ฑํ ์์
๋ฌผ ์์ ๋๋ ๋ฐฉ์์
๋๋ค.
gooo body-codegen --json --activity Qualified \
examples/body-codegen/source-assembly.gooo.fixture > /tmp/generation.json
gooo body-realize --source examples/body-codegen/source-assembly.gooo.fixture \
--generation /tmp/generation.json --out /tmp/gooo-realized
gooo body-codegen --json --activity Qualified /tmp/gooo-realized/realized.gooo
์์ฑ JSON์ gooo_source๋ ์ ํ๋ ํ๋์ ๋ฐ์ํ Gooo ํ์ผ์
๋๋ค.
body-realize๋ ์ ํยท์์ฑ ์ฝ๋ยท์ ํ ์คํ ๊ด์ธก์ ์ฌ๊ตฌ์ฑํ ๋ค ์๋ณธ๊ณผ ๊ธฐ๋ก,
realized.gooo, realization.json์ ์ ํด๋์ ์ ์ฅํฉ๋๋ค. ๋ชจ๋ธ์ ์ถ๊ฐ๋ก
ํธ์ถํ์ง ์์ผ๋ฉฐ ๋ฎ์ ์์ ์ฑ๋ ๊ทธ๋๋ก ๊ธฐ๋กํฉ๋๋ค. baseline๊ณผ picked๋
๊ตฌ๋ฌธยท์๋ฏธ ์ค๊ฐ ํํยท์๋ฐฉํฅ ๋ณํ์ ํจ๊ป ๋จ์ต๋๋ค. ์ ๋ณธ๋ฌธ์ผ๋ก ๊ณํ์ ๋ฐ๊พธ๋ ค๋ฉด
๊ธฐ์กด ๋ ํ๋๋ฅผ ์ง์ฐ๊ณ ํ์ฌ computes๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํ ์์น์ ์์๋ฅผ ๋ง์ถฅ๋๋ค.
์ค์ ์์ฒด ๋ชจ๋ธ์ ์ด ๋ ๊ณผ์ ร ๋ชจ๋ธ/๊ฒฐ์ ๋ก ร ์ธ ๋ฒ์ ์ฐ์ ์์ฑ์์ 12ํ ์์ฑ, ์ ํ 48/48, ๋ณ๋ ์คํ 108/108, ์ค์ ์คํ 24ํ๋ฅผ ํ์ธํ์ต๋๋ค. ๊ฐ ๊ฒฝ๋ก๋ ์ ์ฅ ํ ๋ ๋ฒ ๋ค์ ์์ฑํด๋ GoooยทGoยท๊ณํ ์ง๋ฌธ์ด ์ ์ง๋์ต๋๋ค. ๋ชจ๋ธ ์์ฑ์ ์ด ์ฌ์ฏ ๋ฒ ์ถ๋ก ํ๊ณ ์ด๋ ๋ฒ ์ ์ฅ ๊ณผ์ ์ ์ถ๋ก ์ 0๋ฒ์ ๋๋ค. ๊ธฐ์กด ๊ฐ์ค์น๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ ์ ํ์ต๊ณผ Laya ํธ์ถ์ ์์์ต๋๋ค.
๋ชจ๋ธ ๊ฒฝ๋ก์ ์์ฑ ์ค์๊ฐ์ ๋ ๊ณผ์ ์์ 15.696msยท13.214ms, ์ ์ฅ์ 15.738msยท13.984ms์์ต๋๋ค. ๊ฐ๊ฐ ์ ๋ช ๋ น์ ์์ํ๊ณ ๋ชจ๋ธ/์๋ฃ๋ฅผ ์ฝ๋ ๋น์ฉ์ ํฌํจํฉ๋๋ค. ์ค์ ๋น๋์ ๋ ๋ฒ ์คํ์ ์ค์๊ฐ์ 319.398msยท310.140ms์์ต๋๋ค. ์ธ ๊ด์ธก์ฉ ๊ณ ์ ์์๋ก ์งํํ๊ณ ๋น๋ ์บ์๊ฐ ์์ด ์๋ ๊ฐ์ ํ๋จ์๋ ๋ถ์กฑํฉ๋๋ค. ๋ชจ๋ธ ์์ฒด ์ถ๋ก ์ 19.75โ32.88ยตs, ์์ฑ ๊ณผ์ ์ต๋ RSS๋ 20.0โ21.02MiB์์ต๋๋ค. ์์คํ ์ ์ฒด CPU ์ฆ๊ฐ๋์ ๊ด์ธกํ์ง ์์์ต๋๋ค.
์๋ณธยท์ฌํ ๋๊ตฌยท์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ์คํจํ ์ฒซ ํ๋ณด๋ ๋จ๊ฒผ์ต๋๋ค. ๋ ๊ณผ์ ๋ฅผ ๋ฐ๋ณตํ๊ณ ์ ์ด ์กฐ๊ฑด์ ๋ ์์น์ ๋๋ค. ํ์ฌ ๊ธฐ๋ฅ์ ์ฃผ์ด์ง ์ ํ ์ ํ์ง์ ์ฌ์ฌ์ฉ์ ํ์ธํ๋ฉฐ, ๋ ๋์ ๋ณธ๋ฌธยท์๋์ ํ์ ์ผ๋ก ํ์ฅํ๋ ์์ ์ด ์ด์ด์ง๋๋ค.
์ค์น๋ main f62eb5f0์์๋ ๊ฐ์ ์ด๋ ๋ฒ์ ์์ฑยท์ ์ฅยท๋ค์ ์์ฑ๊ณผ ์ค์ ์คํ์
๋ค์ ํ์ธํ์ต๋๋ค. ์ ํ 48/48ยท๋ณ๋ ์คํ 108/108, ์ค์ ๋ชจ๋ธ ํ๋จ ์ฌ์ฏ ๋ฒ๊ณผ
์ ์ฅ ๊ณผ์ ํ๋จ 0๋ฒ์ด์์ผ๋ฉฐ ์์ ๊ด์ธก์ GoooยทGoยท๊ณํยท๋ชจ๋ธ ์
๋ ฅ ์ง๋ฌธ๊ณผ ๊ฐ์์ต๋๋ค.
์ฒดํฌํฌ์ธํธ๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ์ ๋ณ๋ ฌ ์คํ๊ธฐ๋ ์์
์ ๋ ๊ฐ๋ก ๋ชจ๋ธ/๊ฒฐ์ ๋ก ์์ฒญ
์ฌ๋ ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์คํ ๊ธฐ๋๊ฐ 72/72์ ์ ์ EOF ์ข
๋ฃ๋ฅผ ํ์ธํ์ต๋๋ค.
์ด ๊ด์ธก์์ ๊ต์ฐฉ์ ๋ํ๋์ง ์์์ต๋๋ค.
2026-10-04. ๋ณธ๋ฌธ๊ณผ ์กฐ๋ฆฝ ๊ท์น์ ํจ๊ป ์์ฑํ๋ assembling์ ์ถ๊ฐํ์ต๋๋ค.
Gooo์ ๊ตฌ๋ฌธ, ์๋ฏธ ์ค๊ฐ ํํ, ์๋ฐฉํฅ ๋ณํ๊ณผ ์คํ ๋ช
๋ น์ด ์ด ์ ์ธ์ ๋ณด์กดํฉ๋๋ค.
๊ฐ๋ฐ #1215ยทmain
#1216๋ฅผ ๊ฐ CIยท๋
๋ฆฝ ์ฆ๊ฑฐ ํ์ธ
ํ ๋ณํฉํ์ต๋๋ค. main 8a08adbb์์ CLI์ ๋ณ๋ ์คํ๊ธฐ๋ฅผ Go1.27.1ยทSDK21๋ก
ํจ๊ป ์ค์นํ์ต๋๋ค. ์ ์ค์น์ CLI ์ฌ๋ ์์ฒญ๊ณผ ๋ณ๋ ฌ ์คํ๊ธฐ ์ฌ๋ ์์ฒญ์ ์ ๊ณตํ
์คํ ๊ธฐ๋๊ฐ 144/144, ์ค์ ์คํ 32ํ์ ์ ์ EOF ์ข
๋ฃ๋ฅผ ํ์ธํ์ต๋๋ค.
์ค๊ณ๋ ์์ ์์ ์กฐ๋ฆฝ ๋ฉ๋ชจ์ ์ธก์ ํ๋ฅผ ๋ถ์ด๋ ๋ฐฉ์์
๋๋ค. computes๊ฐ ์์ํ
๋ณธ๋ฌธ์ ๋ด๊ณ , choice๊ฐ ๋ฐ๊ฟ ๋ณผ ๋ถ๋ถ, intent๊ฐ ํ์ ์ง์, case๊ฐ ํ์ธํ
์
์ถ๋ ฅ, attempts๊ฐ ์ดํด๋ณผ ํ๋ณด ์๋ฅผ ๋ด์ต๋๋ค.
์์ ์ ์ธ ์ฝ๊ธฐ
package offsets
namespace offsets
entity Integer id "offsets://integer"
activity Offset(Integer) -> Integer computes "return input - 2" assembling {
choice "offset-order" operand_order at "0" intent "2์์ ์
๋ ฅ์ ๋บ๋ค. Subtract input from two."
case "-1" -> "3"
case "4" -> "-2"
attempts "2"
}
์ฌ๊ธฐ์๋ ์ฒซ ๋บ์
์ ํผ์ฐ์ฐ์ ์์๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์์ ๋ณธ๋ฌธ์ input-2์ด๊ณ ,
์ ์ธํ ๋ ์์๋ฅผ ์ถฉ์กฑํ๋ ๋ณธ๋ฌธ์ 2-input์
๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๋ ํ๋ณด๋ฅผ ํ์
์ด
์ ํด์ง ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ๊ณ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํฉ๋๋ค. ๋ชจ๋ธ์ ์ฐ๊ฒฐํ๋ฉด ๊ทธ ์์๋ฅผ
์ ์ํ๋ฉฐ, ์๋ตํ๋ฉด ์ ํด์ง ์์๋ก ํ๋ณด๋ฅผ ์ดํด๋ด
๋๋ค.
์ด ํ์ผ์ offset.gooo๋ก ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ผ๋ก ์์ฑ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ต๋๋ค.
gooo body-codegen --json --activity Offset offset.gooo
gooo body-context --include-plan --activity Offset offset.gooo
์ ์ฅ์ ์์ ๋ฅผ ๊ณง๋ฐ๋ก ์คํํ๊ธฐ
์ปดํ์ผ๋ฌ ์ ์ฅ์ ๋ฃจํธ์์ ์๋ ๋ช ๋ น์ ์คํํฉ๋๋ค. ์ด๋ฏธ ์ค์น๋ Go1.27.1์ ์ฐพ์ ์์ฑํ ์ฝ๋๋ฅผ ๋น๋ํ๊ณ , ๋ณ๋ ๊ธฐ๋๊ฐ์ ์ค์ ์ถ๋ ฅ์ ๋ ๋ฒ ํ์ธํฉ๋๋ค.
gooo body-path-run \
--source examples/body-codegen/source-assembly.gooo.fixture \
--activity Clamp \
--cases examples/body-codegen/source-assembly-clamp-cases.json \
--repeat 2 --timing --out clamp-results
gooo body-path-run --verify-timing --out clamp-results
--out์ ์ ํด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ณธ, ์์ฑ Go, ์ ํ ๊ฒฐ๊ณผ, ์ค์ ์คํ๊ณผ ์๊ฐ
๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค. ๊ฐ์ ๋ณธ๋ฌธ์ ๋ค์ ๋ง๋ค๋ฉด ๋ณด๊ดํ ์คํํ์ผ์ ์ฌ์ฌ์ฉํ๋ฉฐ ํ์ฌ
์
๋ ฅ์ ์คํ์ ๋ค์ ๊ด์ธกํฉ๋๋ค. Clamp๋ ์์๋ฅผ 0, 0๋ถํฐ 10๊น์ง๋ฅผ ์
๋ ฅ๊ฐ,
10๋ณด๋ค ํฐ ๊ฐ์ 10์ผ๋ก ๋ง๋๋ ๋ฒ์ ์กฐ๋ฆฝ ์์ ์
๋๋ค.
body-codegen์๋ --path-model /path/to/model.json, ํ์ผ ์คํ์๋
--model /path/to/model.json์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฒ ๊ด์ธก์ ๊ณต๊ฐ ์ฐ๊ตฌ ์ ์ฅ์์
models/own-three-feedback-v1/set-feedback/models/fp32/model.json์ ์ฌ์ฉํ์ต๋๋ค.
๋ชจ๋ธ์ ์ง์ ์ ํ ์์ ์
๋ ฅ ์์ฐ์ ํ์ธํด์ผ ํฉ๋๋ค.
๋ณ๋ ์คํ๊ธฐ ์์ฒญ๋ ๊ฐ์ ์ ์ธ์ ์ฌ์ฉํฉ๋๋ค. ํด๋น ํ๋์ assembling์ด ์์ผ๋ฉด
์คํธ๋ฆผ์ document๋ฅผ ์๋ตํ๊ณ execution_cases์ ๋ณ๋ ์คํ ๊ธฐ๋๊ฐ์ ์ค๋๋ค.
์์ฑ ํ ๊ณง๋ฐ๋ก ์คํํ๋ ๊ธฐ์กด --execute์ ๋ณ๋ ฌ ์์
์ ๊ฒฝ๋ก๋ฅผ ์ ์งํ์ต๋๋ค.
์ด๋๋ฅผ ์ ํํ ์ ์๋
| ์ ํ ์ข ๋ฅ | ๋ฐ๊ฟ ๋ณผ ๋ถ๋ถ |
|---|---|
operand_order |
์ดํญ ์ฐ์ฐ์ ํผ์ฐ์ฐ์ ์์ |
local_reference |
์ฝ๋ ์ง์ญ๊ฐ, alternative์ ๋์ ์ด๋ฆ ์ง์ |
assignment_target |
๋์
ํ๋ ์ง์ญ๊ฐ, alternative์ ๋์ ์ด๋ฆ ์ง์ |
branch_layout |
์กฐ๊ฑด์ ๋ถ๊ธฐ ๊ตฌ์ฑ |
root_order |
์ธ์ ํ ๋ ๋ณธ๋ฌธ ๋ฌธ์ฅ์ ์์ |
at์ ํด๋น ์ข
๋ฅ๊ฐ ๋ํ๋๋ ์์น๋ฅผ 0๋ถํฐ ์ผ ๊ฐ์
๋๋ค. ๋ณธ๋ฌธ ํธ์ง์ผ๋ก ์์น๊ฐ
์์ง์ผ ์ ์์ผ๋ฏ๋ก ์๋์ ์์๋ฅผ ํจ๊ป ์์ ํฉ๋๋ค. ์ง์ญ ์ ์ยท๋ถ๋ฆฌ์ธ, ์กฐ๊ฑด์,
๋์
, ์ค์ฒฉ ๋ถ๊ธฐ์ else if๋ฅผ ํ์ฌ IntegerโInteger ๋ณธ๋ฌธ์์ ์ฌ์ฉํฉ๋๋ค.
์์ค๋ ์ต๋ 128KiB, ํํ์๊ณผ ๋ฌธ์ฅ์ ๊ฐ๊ฐ 128์นธ, ์ค์ฒฉ ๊น์ด๋ 16์
๋๋ค.
์ ํ์ง 1โ16๊ฐ, ์ฌ๋ก 1โ128๊ฐ, ํ์ ํ๋ณด 1โ64๊ฐ๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
ํ๋ ์์ ์กฐ๋ฆฝ ์ ์ธ์ด ์ ์ฒด ๊ณํ์ ์ ํฉ๋๋ค. ์ธ๋ถ --path-plan์ด๋ ์คํธ๋ฆผ
document๋ฅผ ํจ๊ป ์ฃผ๋ฉด ์ถฉ๋์ ํ์ํฉ๋๋ค. ์ ์ธ์ด ์๋ ํ๋์์๋ ๊ธฐ์กด ์ธ๋ถ
๋ ์ํผ๋ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฒ ๊ด์ธก๊ณผ ๋ค์ ๊ฐ์
๋ ๊ณผ์ ์์ ์ ์ธ ๋ฐฉ์ยท์ธ๋ถ ๊ณํ ๋ฐฉ์, ์์ฒด ๋ชจ๋ธยท๊ฒฐ์ ๋ก ์ ๋ค ๋ฒ์ฉ ์คํํ์ต๋๋ค.
๊ฐ์ ๋ณ๊ฒฝ ํธ๋ฆฌ์ ํ๋ณด 0f7ec4c0, macOS arm64ยทGo1.27.1์์ ๊ด์ธกํ์ต๋๋ค.
32ํ ์์ฑ์์ ์ ํ ์ฌ๋ก๋ 128/128, ๋ณ๋ ์คํ ์ฌ๋ก๋ 288/288์ด์์ต๋๋ค.
๊ฐ์ ๊ณผ์ ยท๋ชจ๋์ ๋ชจ๋ธ ์
๋ ฅ๊ณผ ์์ฑ Go๋ ๋ ์์ฑ ๋ฐฉ์์์ ์ผ์นํ์ต๋๋ค.
| ๊ณผ์ | ๋ชจ๋ธ ์ฒซ ํ๋ณด | ๋ชจ๋ธ ๊ฒ์ฌ ํ๋ณด | ๊ฒฐ์ ๋ก ์ฒซ ํ๋ณด | ๊ฒฐ์ ๋ก ๊ฒ์ฌ ํ๋ณด |
|---|---|---|---|---|
| ์ง์ญ๊ฐยท์กฐ๊ฑด ์กฐ๋ฆฝ | 0/5 | 3 | 1/5 | 2 |
| ๋ฒ์ ๋ถ๊ธฐ ์กฐ๋ฆฝ | 1/3 | 4 | 3/3 | 1 |
์ด๋ฒ ๋ ๊ณผ์ ์์๋ ๋ชจ๋ธ์ ์ฒซ ์ ํ์ด ๋ ์ฝํ์ต๋๋ค. ์ ํ TDD ํ์์ด ๋ค์ ํ๋ณด๋ฅผ ๊ฒ์ฌํด ์ ๊ณตํ ์์๋ฅผ ์ถฉ์กฑํ์ต๋๋ค. ๊ทธ ์คํจ์ ์ถ๊ฐ ์๋ ๋น์ฉ์ ๋ค์ ๋ชจ๋ธ ๊ฐ์ ์ ์๋ฃ๋ก ๋ณด์กดํฉ๋๋ค. ์ ์ฒด ์์ฐ์ด ์ดํด๋ ๋ชจ๋ ์ ๋ ฅ์ ์ ๋ต๋ฅ ์ ๋ณ๋๋ก ์ธก์ ํด์ผ ํฉ๋๋ค.
์ ์ธ ๋ฐฉ์์ ๋ชจ๋ธ ์ฐ๊ฒฐ ๋ฐ๋ณต ์๋ต ์ค์๊ฐ์ ์ฝ 27โ29ms, ๊ณต๋ ๋ชจ๋ธ ํ๋จ์ ์ฝ 20ยตs์์ต๋๋ค. ์ฒซ ์์ฒญ์ ๋น๋๋ฅผ ํฌํจํ๊ณ , ๋ฐ๋ณต ์์ฒญ์ ์คํํ์ผ์ ์ฌ์ฌ์ฉํ์ต๋๋ค. ์ ์ธ ํ์ธ์ ๋น์ฉ๋ ์ฆ๊ฐํ์ต๋๋ค. ์ ์ฒด ๋ช ๋ น์ CPU ์๊ฐ/๋ฒฝ ์๊ฐ์ ํ ์ฝ์ด ๊ธฐ์ค 62.1โ81.0%, ์ต๋ RSS๋ 82.48โ83.48MiB์์ต๋๋ค. ์ปดํ์ผยท์คํ์ ํฌํจํ๋ ๊ฐ์ด๋ฉฐ ๋ชจ๋ธ ํ ์๋ 74,624๋ฐ์ดํธ์ ๋๋ค. ์ปดํจํฐ ์ ์ฒด CPU ์ฆ๊ฐ๋์ ๊ด์ธกํ์ง ์์์ต๋๋ค.
๊ฐ์ค์น๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ ์ ํ์ต์ ํ์ง ์์์ต๋๋ค. ๋ค์ ๋จ๊ณ๋ ๋ฎ์ ์์์ ์คํจ ์์๋ฅผ ๊ตฌ๋ถํ๊ณ , ๊ฐ์ ํ๋ณด ์์ฐ์์ ๋ถ๋ถ ์ถฉ์กฑ๊ณผ ํ๊ท๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค.
์ ๋น๊ต ์คํ๊ณผ ๋ณ๋๋ก, ์ ์ค์น๋ณธ์ ๋ชจ๋ธ ์ฌ์ฌ์ฉ ์๋ต์ ์ง์ญ๊ฐ ์์ 34.745ms, ๋ฒ์ ์์ 33.816ms์์ต๋๋ค. ๊ฐ ์์น๋ ๋ฐ๋ณต ์์ฒญ ํ ๊ฑด์ ๊ด์ธก์ ๋๋ค. ์ฒซ ์์ฒญ์ ๊ฐ๊ฐ 497.687ยท532.473ms๋ก ๋น๋๋ฅผ ํฌํจํ์ต๋๋ค. ์ค์น ๋ฒ์ ๊ณผ ๊ฒ์ฌ ๊ทผ๊ฑฐ.
๋ณ๋ ํ์ ์คํ์์๋ ์ฒซ ํ๋ณด์ 0/5 ์คํจ์ ์ค์ ๊ฐ๋ฐ CI์ PASS ์ํ๋ฅผ ๋ค์ ๋ชจ๋ธ ๋ฌธ๋งฅ์ ๋ฃ์์ต๋๋ค. ๋ ์์ฒญ์ด ๊ฐ๊ฐ ๊ณต๋ ํ๋จ ๋ ๋ฒยทํ๋ณด ๋ ๊ฐ๋ฅผ ๊ฒ์ฌํด ์ ํ 5/5์ ๋ณ๋ ์คํ 11/11์ ์ป์์ต๋๋ค. CI ์ํ์ ํจ๊ณผ๋ ๋ณ๋๋ก ๋น๊ตํ์ง ์์์ต๋๋ค. ์ฒ์ ๋ค๋ฅธ ์์ ์ ๊ธฐ๋๊ฐ์ ์์ด ์ป์ ๋ ์์ฒญ์ 1/11๋ ๊ฐ์ ๋ถ๋ก์ ๋ณด์กดํ์ต๋๋ค. ์ด ํ์ ์คํ์ ์ 32ํ ์ง๊ณ์ ๊ตฌ๋ถํฉ๋๋ค. ํ์ ๋ฌธ๋งฅ๊ณผ ์ ๋ ฅ ์ค์์ ์๋ณธ.