Native Failure Feedback - kimjooyoon/meta-ontology-go GitHub Wiki

계산 μ‹€νŒ¨λ₯Ό λ‹€μŒ 쑰립에 μ“°κΈ°

예제λ₯Ό ν†΅κ³Όν•œ ν•¨μˆ˜κ°€ λ‹€λ₯Έ μž…λ ₯μ—μ„œλŠ” μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. input / input은 μž…λ ₯이 1일 λ•Œ 1μ΄μ§€λ§Œ, μž…λ ₯이 0이면 계산할 수 μ—†μŠ΅λ‹ˆλ‹€. Goooκ°€ 이 μ‹€νŒ¨λ₯Ό λ‹€μŒ μ½”λ“œ 쑰립에 μ‚¬μš©ν•  수 μžˆλ„λ‘ μ‹€ν–‰ κ²°κ³Όλ₯Ό λ„“ν˜”μŠ΅λ‹ˆλ‹€.

무엇을 λ‚¨κΈ°λ‚˜

κ²°κ³Ό κΈ°λ‘ν•˜λŠ” λ‚΄μš©
정상 좜λ ₯ μ‹€μ œ κ°’κ³Ό κΈ°λŒ€κ°’μ˜ 일치 μ—¬λΆ€
계산 μ‹€νŒ¨ ν™œλ™ ID, μ—°μ‚° μœ„μΉ˜, μ—°μ‚°μž, ν”Όμ—°μ‚°μž
의쑴 ν™œλ™ 쀑단 μ•žμ—μ„œ μ‹€νŒ¨ν•΄ 받을 수 μ—†μ—ˆλ˜ κ°’μ˜ μƒμ‚°μž
아직 κ΄€μΈ‘ν•˜μ§€ λͺ»ν•¨ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ–»μ§€ λͺ»ν•œ κΈ°λŒ€κ°’

ν•œ ν™œλ™μ΄ μ‹€νŒ¨ν•΄λ„ μ•žμ„œ 얻은 κ°’κ³Ό 독립 ν™œλ™μ˜ 좜λ ₯은 λ‚¨μŠ΅λ‹ˆλ‹€. μ‹€νŒ¨ν•œ 값을 ν•„μš”λ‘œ ν•˜λŠ” ν™œλ™μ€ κ²°κ³Όλ₯Ό λ§Œλ“€μ§€ μ•Šκ³  의쑴 관계λ₯Ό λ‚¨κΉλ‹ˆλ‹€. κΈ°λŒ€κ°’μ„ μ§€μ •ν•˜μ§€ μ•Šμ€ ν™œλ™μ˜ μ‹€νŒ¨λ„ λ”°λ‘œ μ„Έλ―€λ‘œ, 일뢀 좜λ ₯만 6/6이라고 전체가 μ™„λ£Œλ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ 이 μ²˜λ¦¬λŠ” int64의 0 λ‚˜λˆ—μ…ˆκ³Ό λ‚˜λ¨Έμ§€ 연산에 μ μš©ν•©λ‹ˆλ‹€. μ˜ˆμΈ‘ν•˜μ§€ λͺ»ν•œ ν”„λ‘œμ„ΈμŠ€ 였λ₯˜, μ‹œκ°„ μ΄ˆκ³Όμ™€ μ·¨μ†ŒλŠ” μ›λž˜ μ‹€νŒ¨ 기둝으둜 λ‚¨μŠ΅λ‹ˆλ‹€.

Goooκ°€ λ‹€μŒ μž‘μ—…μ„ κ³ λ₯΄λŠ” 예제

두 후보가 μžˆλŠ” ν•¨μˆ˜λ₯Ό μ€€λΉ„ν–ˆμŠ΅λ‹ˆλ‹€. 첫 ν›„λ³΄λŠ” input / input, 두 λ²ˆμ§ΈλŠ” μƒμˆ˜ 1μž…λ‹ˆλ‹€. μ²˜μŒμ—λŠ” μž…λ ₯ 1μ—μ„œ λ‘˜ λ‹€ λ§žμœΌλ―€λ‘œ 첫 후보λ₯Ό κ³ λ¦…λ‹ˆλ‹€.

ν‰κ°€μ—μ„œ μž…λ ₯ 0이 μ‹€νŒ¨ν•˜λ©΄ Gooo ν”Όλ“œλ°± κ·œμΉ™μ΄ μ›λž˜ μž…λ ₯ 0κ³Ό κΈ°λŒ€κ°’ 1을 λ‹€μŒ 쑰립에 μΆ”κ°€ν•©λ‹ˆλ‹€. μ΄μ–΄μ„œ μ‹œλ„ ν•œλ„λ₯Ό 늘렀 두 번째 후보λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. 싀행은 μ„Έ 회차, 총 λ„€ 번의 μ‹œλ„λ₯Ό κΈ°λ‘ν–ˆκ³  μ΅œμ’… 별도 μ •μˆ˜ μž…λ ₯ 3개λ₯Ό λ§žν˜”μŠ΅λ‹ˆλ‹€. κΈ°λŒ€κ°’μ„ λ°”κΎΈκ±°λ‚˜ μ‹€νŒ¨ν•œ μž…λ ₯을 μ œμ™Έν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ μ˜ˆμ‚° ν•¨μˆ˜μ—μ„œλŠ” μ—¬μ„― 후보 쀑 두 κ°œκ°€ μ‹€ν–‰ 전에 νƒˆλ½ν•˜κ³ , λ„€ κ°œκ°€ μ‹€μ œλ‘œ μ‹€ν–‰λμŠ΅λ‹ˆλ‹€. 그쀑 ν•˜λ‚˜κ°€ 계산에 μ‹€νŒ¨ν–ˆκ³  λ§ˆμ§€λ§‰ 후보가 평가 4개λ₯Ό λ§žν˜”μŠ΅λ‹ˆλ‹€. μ‹œλ„ ν•œλ„λ₯Ό λ‹€μ„―μœΌλ‘œ μ œν•œν•˜λ©΄ 1/4의 λΆ€λΆ„ κ²°κ³Όλ₯Ό λ‚¨κΉλ‹ˆλ‹€. μžλ™ ν”Όλ“œλ°±μœΌλ‘œ 이 과정을 μ—°κ²°ν•œ 싀행은 λ‹€μ„― 회차, 총 14번의 μ‹œλ„λ₯Ό κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€.

λΆ„κΈ° κ·œμΉ™μ€ Gooo μ†ŒμŠ€μ— μžˆμŠ΅λ‹ˆλ‹€. Go μ½”λ“œλŠ” κ²°κ³Όλ₯Ό μ •ν™•ν•œ μ •μˆ˜λ‘œ 읽고 λͺ…λ Ήκ³Ό νŒŒμΌμ„ μ—°κ²°ν•©λ‹ˆλ‹€. 일반 μ‹€ν–‰μ˜ 진단 κ·œμΉ™λ„ Gooo둜 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ€ 어디에 μ“°λ‚˜

λ ˆμ½”λ“œ 쑰립을 μ„žμ€ μ˜ˆμ œμ—μ„œλŠ” κΈ°μ‘΄ 자체 μ†Œν˜• λͺ¨λΈμ΄ ν›„λ³΄μ˜ μˆœμ„œλ₯Ό ν•œ 번 μ œμ•ˆν•©λ‹ˆλ‹€. κ³ μ • μˆœμ„œ 48번과 λͺ¨λΈ μˆœμ„œ 6번으둜 같은 μ½”λ“œλ₯Ό κ³¨λžμŠ΅λ‹ˆλ‹€. 빈칸 ν‘œν˜„μ‹μ€ μ†ŒμŠ€ μˆœμ„œλŒ€λ‘œ ν™•μΈν•©λ‹ˆλ‹€. 이 μ‹€ν—˜μ— μΆ”κ°€ ν•™μŠ΅μ€ μ—†μ—ˆκ³  μ €μž₯ μž¬μ‹€ν–‰μ˜ μƒˆ 좔둠은 0νšŒμž…λ‹ˆλ‹€.

개발 μ†ŒμŠ€ 3b762198의 ν•œ 번의 둜컬 μ‹€ν–‰μ—μ„œ μ˜ˆμΈ‘μ€ 29,125ns, 전체 쑰립 λͺ…령은 2.23μ΄ˆμ˜€μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžΒ·μ‹œμŠ€ν…œ CPU μ‹œκ°„μ€ 각각 0.78초·0.53초, μ΅œλŒ€ RSSλŠ” 86,769,664λ°”μ΄νŠΈμ˜€μŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ ν…ŒμŠ€νŠΈλ„ μ‹€ν–‰ μ€‘μ΄μ—ˆμœΌλ―€λ‘œ μ„±λŠ₯ 비ꡐ 자료둜 μΌλ°˜ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 호슀트 전체 CPU μ‚¬μš©λ₯ μ€ 이 츑정에 ν¬ν•¨ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ§€ν‘œλ₯Ό μ½λŠ” κΈ°μ€€

  • μ‹œλ„ 수 = μ‹€ν–‰ μ „ νƒˆλ½ 수 + μ‹€μ œ μ‹€ν–‰ν•œ μ‘°ν•© 수.
  • 계산 μ‹€νŒ¨ μ‘°ν•© μˆ˜λŠ” μ‹€μ œ μ‹€ν–‰ν•œ 쑰합에 ν¬ν•¨ν•©λ‹ˆλ‹€.
  • λ§žμŒΒ·λΆˆμΌμΉ˜Β·κ³„μ‚° μ‹€νŒ¨Β·μ˜μ‘΄ ν™œλ™ 쀑단은 κΈ°λŒ€κ°’μ΄ μžˆλŠ” 좜λ ₯을 κΈ°μ€€μœΌλ‘œ μ…‰λ‹ˆλ‹€.
  • λ³„λ„μ˜ ν™œλ™ μ‹€νŒ¨ μˆ˜λŠ” κΈ°λŒ€κ°’μ΄ μ—†λŠ” ν™œλ™λ„ ν¬ν•¨ν•©λ‹ˆλ‹€.
  • μž¬μ‹€ν–‰ 기둝의 κ³Όκ±° μ‹œλ„ μˆ˜μ™€ μƒˆ μΆ”λ‘  νšŸμˆ˜λŠ” λΆ„λ¦¬ν•©λ‹ˆλ‹€.

μž‘μ—…μž₯의 diagnoseλŠ” μ €μž₯된 κ°’κ³Ό 집계가 λ§žλŠ”μ§€ ν™•μΈν•˜κ³  λ‹€μŒ μž‘μ—…μ„ μ œμ•ˆν•©λ‹ˆλ‹€. μ›λž˜ μ†ŒμŠ€λ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•΄ ν™•μΈν•˜λŠ” κ²½λ‘œλŠ” 컴파일러의 μ €μž₯ μž¬μ‹€ν–‰μž…λ‹ˆλ‹€.

μ½”λ“œμ™€ 원본

이 κΈ°λŠ₯은 곡개 0.6.16에 ν¬ν•¨λμŠ΅λ‹ˆλ‹€. 배포 μ†ŒμŠ€λŠ” 146a5085이며, μ‹€μ œ μ„€μΉ˜λ³Έμ—μ„œ μ›λž˜ μ‹€νŒ¨Β·λΆ€λΆ„ 결과·큰 μ •μˆ˜Β·μ €μž₯ μž¬μ‹€ν–‰μ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 곡개 파일과 μ‹€ν–‰ 원본, μž‘μ—…μž₯ μ—°κ²° μƒνƒœλŠ” ν˜„μž¬ μƒνƒœμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.