Skip to main content
  1. Posts/
  2. Today I Learned/

CSAPP 5.5 Reducing Procedure Calls

·183 words·1 min
Jiho Kim
Author
Jiho Kim
달렀 또 달렀

πŸ“ 상세 정리
#

  • μ•žμ„œ μ‚΄νŽ΄λ³Έ 바와 같이 ν”„λ‘œμ‹œμ Έ ν˜ΈμΆœμ€ μ˜€λ²„ν—€λ“œλ₯Ό λ°œμƒμ‹œν‚€κ³ , ν”„λ‘œκ·Έλž¨ μ΅œμ ν™”λ₯Ό λ°œμƒν•  수 μžˆλ‹€.
8		for (i = 0; i < length; i++) {
9			data_t val;
10			get_vec_element(v, i, &val);
11			*dest = *dest OP val;
12		}
  • 이런 λΆ€λΆ„μ—μ„œ, get_vec_elementκ°€ λ§€ 루프 λ°˜λ³΅λ§ˆλ‹€ 호좜되고, 이 μ•ˆμ—μ„œ iκ°€ μœ νš¨ν•œ μΈλ±μŠ€μΈμ§€ 맀번 κ²€μ‚¬ν•˜λŠ”λ°, 이 λ˜ν•œ λΉ„νš¨μœ¨μ μ΄λ‹€.
1	data_t *get_vec_start(vec_ptr v)
2	{
3		return v->data;
4	}

1	/* Direct access to vector data */
2	void combine3(vec_ptr v, data_t *dest)
3	{
4		long i;
5		long length = vec_length(v);
6		data_t *data = get_vec_start(v); 
7
8		*dest = IDENT;
9		for (i = 0; i < length; i++) {
10			*dest = *dest OP data[i];
11		}
12	}
  • μœ„μ™€ 같이 λ°”κΎΈλ©΄ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” λŒ€μ‹  배열에 직접 μ ‘κ·Όν•˜κ³ , 더 빨라질 것을 κΈ°λŒ€ν•  수 μžˆλ‹€.
  • ν•˜μ§€λ§Œ μ‹€μ œλ‘œ ν…ŒμŠ€νŠΈν•΄λ³΄λ©΄ λͺ…λ°±ν•œ μ„±λŠ₯ ν–₯상을 μΌμ–΄λ‚˜μ§€ μ•Šκ³ , μ •μˆ˜ ADDλŠ” 였히렀 μ„±λŠ₯이 μ €ν•˜λ˜μ—ˆλ‹€.
    • 5.11.2μ—μ„œ μ™œ μœ„μ˜ ν•¨μˆ˜κ°€ μ„±λŠ₯ν–₯상이 λ°œμƒν•˜μ§€ μ•ŠλŠ”μ§€ 확인할 수 μžˆλ‹€.
    • 아직은 이 λ³€ν™˜μ΄ ꢁ극적으둜 μ„±λŠ₯ν–₯상을 μœ„ν•œ 단계쀑 ν•˜λ‚˜λ‘œ μž‘μš©ν•  μˆ˜λŠ” μžˆλ‹€λŠ” 것 κΉŒμ§€λ§Œ μ•Œμ•„λ‘μž.

β”μ§ˆλ¬Έ 사항
#

πŸ”— μ°Έκ³  자료
#