μ½λ μ΅μ νλ 무μμΌκΉμ?
μ½λ μ΅μ νλ μννΈμ¨μ΄μ μ±λ₯μ ν₯μμν€κΈ° μν΄ μ½λλ₯Ό κ°μ νλ κ³Όμ μ λλ€. λ λΉ λ₯΄κ² μ€νλλλ‘, λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄λλ‘, λλ μλμ§ μλΉλ₯Ό μ€μ΄λλ‘ μ½λλ₯Ό μμ νλ κ²μ μλ―Έν©λλ€. λ¨μν μλνλ μ½λλ₯Ό λμ΄, ν¨μ¨μ μ΄κ³ ν¨κ³Όμ μΈ μ½λλ₯Ό μμ±νλ κ²μ΄ ν΅μ¬μ λλ€. μ΅μ νλ μ€ν μλ, λ©λͺ¨λ¦¬ κ΄λ¦¬, μλμ§ ν¨μ¨ λ± λ€μν μΈ‘λ©΄μ κ³ λ €νμ¬ μνλ©λλ€. μ μ΅μ νλ μ½λλ μ¬μ©μ κ²½νμ ν₯μμν€κ³ , μλ² λΆνλ₯Ό μ€μ΄λ©°, λΉμ©μ μ κ°νλ λ° ν° λμμ΄ λ©λλ€. μλͺ»λ μ΅μ νλ μ€νλ € μ±λ₯μ μ νμν€κ±°λ μ½λμ κ°λ μ±μ λ¨μ΄λ¨λ¦΄ μ μμΌλ―λ‘, μ μ€ν μ κ·Όμ΄ νμν©λλ€.
μ΄λ€ μ½λλ₯Ό μ΅μ νν΄μΌ ν κΉμ?
λͺ¨λ μ½λλ₯Ό μ΅μ νν νμλ μμ΅λλ€. λ³λͺ© νμ(bottleneck)μ΄ λ°μνλ λΆλΆ, μ¦ νλ‘κ·Έλ¨ μ€ν μλλ₯Ό ν¬κ² μ’μ°νλ λΆλΆμ μ§μ€μ μΌλ‘ μ΅μ νν΄μΌ ν©λλ€. νλ‘νμΌλ§ λꡬλ₯Ό μ¬μ©νμ¬ μ±λ₯ λΆμμ μ€μνκ³ , μ€ν μκ°μ΄ κ°μ₯ κΈ΄ λΆλΆμ νμ νλ κ²μ΄ μ€μν©λλ€. μλ₯Ό λ€μ΄, λ°λ³΅λ¬Έ μμμ λ§μ μ°μ°μ μννλ λΆλΆμ΄λ, μμ£Ό νΈμΆλλ ν¨μ λ±μ΄ μ΅μ νμ λμμ΄ λ μ μμ΅λλ€. λ¨μν μ½λμ κΈΈμ΄κ° κΈΈλ€κ³ ν΄μ μ΅μ νκ° νμν κ²μ μλλλ€. μ€μ μ±λ₯μ μν₯μ λ―ΈμΉλ λΆλΆμ μ§μ€νλ κ²μ΄ ν¨μ¨μ μ λλ€.
μ£Όμ μ½λ μ΅μ ν κΈ°λ²μ 무μμΌκΉμ?
λ€μν μ½λ μ΅μ ν κΈ°λ²μ΄ μ‘΄μ¬ν©λλ€. λνμ μΈ κΈ°λ²λ€μ μ΄ν΄λ³΄κ² μ΅λλ€.
κΈ°λ² | μ€λͺ | μμ |
---|---|---|
μκ³ λ¦¬μ¦ κ°μ | λ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μ°μ° μκ°μ λ¨μΆν©λλ€. | O(n^2) μκ³ λ¦¬μ¦μ O(n log n) μκ³ λ¦¬μ¦μΌλ‘ λ³κ²½ |
λ°μ΄ν° ꡬ쑰 λ³κ²½ | μ μ ν λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μ κ·Ό μκ°μ λ¨μΆν©λλ€. | λ°°μ΄ λμ ν΄μ ν μ΄λΈμ μ¬μ© |
루ν μ΅μ ν | λ°λ³΅λ¬Έμ ν¨μ¨μ±μ λμ λλ€ (루ν μΈλ‘€λ§, 루ν μ΅ν© λ±). | λΆνμν μ°μ°μ μ κ±°, μ€λ³΅ κ³μ° λ°©μ§ |
λ©λͺ¨λ¦¬ κ΄λ¦¬ μ΅μ ν | λ©λͺ¨λ¦¬ ν λΉ λ° ν΄μ λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νμ¬ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ λλ€. | λ©λͺ¨λ¦¬ ν μ¬μ©, κ°μ²΄ νλ§ |
μ½λ λ³ν© | μ¬λ¬ κ°μ μμ ν¨μλ₯Ό νλμ ν¨μλ‘ ν©μ³ ν¨μ νΈμΆ μ€λ²ν€λλ₯Ό μ€μ λλ€. | μ¬λ¬ μμ ν¨μλ₯Ό νλμ ν° ν¨μλ‘ ν΅ν© |
μΊμ νμ© | CPU μΊμλ₯Ό ν¨μ¨μ μΌλ‘ νμ©νμ¬ λ°μ΄ν° μ κ·Ό μκ°μ λ¨μΆν©λλ€. | λ°μ΄ν° μ κ·Ό μμλ₯Ό μ΅μ ν |
μ½λ μ΅μ ν μ¬λ‘ μ°κ΅¬: μΉ μλ² μ±λ₯ ν₯μ
νΉμ μΉ μλ²μ μλ΅ μκ°μ΄ λλ¦° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ€μκ³Ό κ°μ μ΅μ νλ₯Ό μ§ννμ΅λλ€. λ¨Όμ νλ‘νμΌλ§ λꡬλ₯Ό μ¬μ©νμ¬ λ³λͺ© μ§μ μ λΆμν κ²°κ³Ό, λ°μ΄ν°λ² μ΄μ€ μΏΌλ¦¬κ° κ°μ₯ ν° μμΈμμ νμΈνμ΅λλ€. κ·Έ ν, 쿼리 μ΅μ ν, μΈλ±μ€ μΆκ°, μΊμ± κΈ°λ² λμ λ±μ λ°©λ²μ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ μ²λ¦¬ μλλ₯Ό 30% ν₯μμμΌ°μ΅λλ€. λν, λΆνμν μ½λλ₯Ό μ κ±°νκ³ , μκ³ λ¦¬μ¦μ κ°μ νμ¬ μλ² μ²λ¦¬ μλλ₯Ό μΆκ°μ μΌλ‘ 15% ν₯μμμΌ°μ΅λλ€. κ²°κ³Όμ μΌλ‘, μΉ μλ²μ μλ΅ μκ°μ 40% μ΄μ λ¨μΆνλ λ° μ±κ³΅νμ΅λλ€. π
μ½λ μ΅μ ν λꡬμ κΈ°μ μ 무μμ΄ μμκΉμ?
λ€μν μ½λ μ΅μ ν λꡬμ κΈ°μ μ΄ μ‘΄μ¬νλ©°, μ¬μ©νλ νλ‘κ·Έλλ° μΈμ΄μ κ°λ° νκ²½μ λ°λΌ μ μ ν λꡬλ₯Ό μ ννλ κ²μ΄ μ€μν©λλ€. λνμ μΈ μλ‘λ νλ‘νμΌλ¬(profiler), μ μ λΆμκΈ°(static analyzer), μ»΄νμΌλ¬ μ΅μ ν μ΅μ λ±μ΄ μμ΅λλ€. νλ‘νμΌλ¬λ μ½λμ μ€ν μκ°κ³Ό λ©λͺ¨λ¦¬ μ¬μ©λμ μΈ‘μ νμ¬ λ³λͺ© μ§μ μ μ°Ύλ λ° λμμ μ£Όκ³ , μ μ λΆμκΈ°λ μ½λμ λ²κ·Έμ μ±λ₯ λ¬Έμ λ₯Ό μ¬μ μ κ°μ§ν©λλ€. μ»΄νμΌλ¬ μ΅μ ν μ΅μ μ μ»΄νμΌ κ³Όμ μμ μ½λλ₯Ό μ΅μ ννμ¬ μ±λ₯μ ν₯μμν΅λλ€. κ° λꡬμ νΉμ§κ³Ό μ₯λ¨μ μ λΉκ΅ λΆμνμ¬ νλ‘μ νΈμ κ°μ₯ μ ν©ν λꡬλ₯Ό μ ννλ κ²μ΄ μ€μν©λλ€.
ν¨κ» 보면 μ’μ μ 보: κ΄λ ¨ ν€μλ
-
νλ‘νμΌλ§: μ½λ μ±λ₯ λΆμμ νμμ μΈ κΈ°μ μ λλ€. νλ‘νμΌλ§ λꡬλ₯Ό ν΅ν΄ μ½λμ μ΄λ λΆλΆμ΄ μ±λ₯ λ³λͺ© νμμ μΌμΌν€λμ§ μ νν νμ ν μ μμ΅λλ€. λνμ μΈ νλ‘νμΌλ§ λꡬλ‘λ gprof, Valgrind λ±μ΄ μμ΅λλ€.
-
λΉ O νκΈ°λ²: μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λλ₯Ό νννλ λ°©λ²μ λλ€. λΉ O νκΈ°λ²μ μ΄ν΄νλ©΄ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λΉκ΅νκ³ , μ΅μ μ μκ³ λ¦¬μ¦μ μ ννλ λ° λμμ΄ λ©λλ€.
-
λ°μ΄ν° ꡬ쑰: λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ μ₯νκ³ κ΄λ¦¬νλ λ°©λ²μ λλ€. λ°°μ΄, μ°κ²° 리μ€νΈ, νΈλ¦¬, ν΄μ ν μ΄λΈ λ± λ€μν λ°μ΄ν° κ΅¬μ‘°κ° μμΌλ©°, κ°κ° μ₯λ¨μ μ΄ λ€λ¦ λλ€. νλ‘κ·Έλλ° λ¬Έμ μ μ ν©ν λ°μ΄ν° ꡬ쑰λ₯Ό μ ννλ κ²μ΄ μ±λ₯ ν₯μμ μ€μν μν μ ν©λλ€.
μΆκ° μ 보: μ€μ μ΅μ ν κ²½νκ³Ό μΆκ° κΈ°λ²
μ€μ νλ‘μ νΈμμ μ΄λ €μμ 무μμ΄μλμ?
μ€μ νλ‘μ νΈμμ μ½λ μ΅μ νλ₯Ό μ§ννλ©΄μ κ°μ₯ μ΄λ €μ λ μ μ, μ΅μ ν μ΄ν μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ μ μ§νλ κ²μ΄μμ΅λλ€. μ΅μ ν κ³Όμ μμ μ½λκ° λ³΅μ‘ν΄μ§κ±°λ κ°λ μ±μ΄ λ¨μ΄μ§λ©΄, μ₯κΈ°μ μΌλ‘ μ μ§λ³΄μμ μ΄λ €μμ κ²ͺμ μ μμ΅λλ€. λ°λΌμ μ΅μ νλ μ±λ₯ ν₯μκ³Ό λλΆμ΄ μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ κ³ λ €νμ¬ μ§νν΄μΌ ν©λλ€. μ μ ν μ£Όμκ³Ό λͺ νν μ½λ ꡬ쑰λ₯Ό μ μ§νλ κ²μ΄ μ€μν©λλ€.
λ ν¨κ³Όμ μΈ μ΅μ ν κΈ°λ²μ 무μμΌκΉμ?
μμ μΈκΈλ κΈ°λ² μΈμλ, λ€μκ³Ό κ°μ μΆκ°μ μΈ μ΅μ ν κΈ°λ²λ€μ κ³ λ €ν μ μμ΅λλ€.
-
λ³λ ¬ μ²λ¦¬: μ¬λ¬ μ½μ΄λ₯Ό νμ©νμ¬ λ³λ ¬ μ²λ¦¬λ₯Ό ꡬννλ©΄ μ²λ¦¬ μλλ₯Ό ν¬κ² ν₯μμν¬ μ μμ΅λλ€. OpenMP, MPI λ±μ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νλ©΄ λ³λ ¬ μ²λ¦¬λ₯Ό μ½κ² ꡬνν μ μμ΅λλ€.
-
λ©λͺ¨λ¦¬ μΊμ±: μμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬ μΊμμ μ μ₯νμ¬ λ°μ΄ν° μ κ·Ό μλλ₯Ό ν₯μμν΅λλ€. L1, L2, L3 μΊμ λ± λ€μν λ 벨μ μΊμκ° μμΌλ©°, κ° μΊμμ νΉμ§μ μ΄ν΄νκ³ ν¨μ¨μ μΌλ‘ νμ©νλ κ²μ΄ μ€μν©λλ€.
-
JIT μ»΄νμΌλ¬: Just-In-Time μ»΄νμΌλ¬λ μ½λλ₯Ό μ€ν μμ μ μ»΄νμΌνμ¬ μ΅μ νλ μ½λλ₯Ό μμ±ν©λλ€. Java, JavaScript λ±μ μΈμ΄μμ μ¬μ©λλ©°, μ±λ₯ ν₯μμ ν° λμμ΄ λ©λλ€.
μ½λ μ΅μ ν ν μ±λ₯ μΈ‘μ μ μ΄λ»κ² νλμ?
μ½λ μ΅μ ν νμλ λ°λμ μ±λ₯ μΈ‘μ μ ν΅ν΄ μ΅μ ν ν¨κ³Όλ₯Ό νμΈν΄μΌ ν©λλ€. νλ‘νμΌλ§ λꡬλ₯Ό μ¬μ©νμ¬ μ΅μ ν μ νμ μ€ν μκ°κ³Ό λ©λͺ¨λ¦¬ μ¬μ©λμ λΉκ΅ λΆμνκ³ , μ±λ₯ ν₯μ μ λλ₯Ό μ λμ μΌλ‘ μΈ‘μ ν©λλ€. μ±λ₯ μΈ‘μ κ²°κ³Όλ₯Ό λ°νμΌλ‘ μ΅μ ν μ λ΅μ κ°μ νκ³ , μ΅μ ν μμ μ ν¨μ¨μ±μ λμΌ μ μμ΅λλ€. λ¨μν μκ° μΈ‘μ λΏ μλλΌ, μ€μ μ¬μ© νκ²½μμμ μ±λ₯μ μΈ‘μ νλ κ²μ΄ μ€μν©λλ€.
ν¨κ» 보면 μ’μ μ 보: μΆκ° κ΄λ ¨ ν€μλ
-
λ³λ ¬ νλ‘κ·Έλλ°: μ¬λ¬ μ½μ΄λ₯Ό νμ©νμ¬ νλ‘κ·Έλ¨μ μ€ννλ κΈ°μ μ λλ€. λ³λ ¬ νλ‘κ·Έλλ°μ ν΅ν΄ νλ‘κ·Έλ¨μ μ€ν μλλ₯Ό νκΈ°μ μΌλ‘ ν₯μμν¬ μ μμ΅λλ€.
-
μΊμ λ©λͺ¨λ¦¬: CPUμ λ©λͺ¨λ¦¬ μ¬μ΄μ μμΉν κ³ μ λ©λͺ¨λ¦¬μ λλ€. μμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό μΊμ λ©λͺ¨λ¦¬μ μ μ₯νμ¬ λ©λͺ¨λ¦¬ μ κ·Ό μκ°μ μ€μΌ μ μμ΅λλ€.
-
JIT μ»΄νμΌ: Just-In-Time μ»΄νμΌμ νλ‘κ·Έλ¨ μ€ν μ€μ μ½λλ₯Ό μ»΄νμΌνλ κΈ°μ μ λλ€. μ€ν νκ²½μ λ§μΆ° μ½λλ₯Ό μ΅μ ννμ¬ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
μ½λ μ΅μ ν κ΄λ ¨ λμμ



μ½λ μ΅μ ν κ΄λ ¨ μνκ²μ