Octave Atelier

코드와 해설을 함께 읽는 학습 문서

Code Detail

speed_test5

Performance 중심의 Octave 학습 예제

ex-speed/speed_test5.m

목록으로

코드를 복사해 Octave에서 바로 실행할 수 있습니다.

카테고리

Performance Drill

performance

코드 길이

21

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load

함수 시그니처

function [x, y, z] = speed_test5(n, p, q, r, t)

전체 코드

21 lines

function [x, y, z] = speed_test5(n, p, q, r, t)
    # - n = 100000, p = 4, q = 4, r = 4
    # - 실행 방식: 루프를 사용하지 않고 `:` 연산자를 이용하여 벡터화된 연산 수행
    # - 실행 시간: 0.828358 seconds (가장 빠름)
    # - 최적화된 점: 모든 연산을 벡터화하여 반복문 없이 직접 계산 및 할당 수행
    
    x = zeros(n, p, q, r);
    y = zeros(n, p, q, r);
    z = zeros(n, p, q, r);

    for i=1:p
        for j=1:q
            for k=1:r
                x(:,i,j,k) = sin(t);
                y(:,i,j,k) = cos(t);
                z(:,i,j,k) = sin(t) .* cos(t);
            end
        end
    end
end

코드 해설

목적

  • Performance 중심의 Octave 학습 예제

입력

  • 파라미터: n
  • 파라미터: p
  • 파라미터: q
  • 파라미터: r
  • 파라미터: t

출력

  • 반환값: x
  • 반환값: y
  • 반환값: z

실행 흐름

  1. - 실행 방식: 루프를 사용하지 않고 `:` 연산자를 이용하여 벡터화된 연산 수행
  2. - 최적화된 점: 모든 연산을 벡터화하여 반복문 없이 직접 계산 및 할당 수행

핵심 함수

  • zeros
  • cos
  • sin
  • seconds

실습 과제

  • 핵심 함수 zeros의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
  • "- 실행 방식: 루프를 사용하지 않고 `:` 연산자를 이용하여 벡터화된 연산 수행 -> - 최적화된 점: 모든 연산을 벡터화하여 반복문 없이 직접 계산 및 할당 수행" 흐름을 함수 단위로 분리해 리팩터링해보세요.

같은 카테고리 코드

이전 코드 speed_test4 다음 코드 startup-sample