Gauche: 목록의 각 요소를 변수로 결합하는 방법으로 2가지 기준을 얻어본다

5237 단어 schemegauchetech
길이 5의 목록으로 변수 a, b, c, d, e에 각 요소를 묶는 방법
각각 다음과 같은 방법으로 기준을 얻었다.

  • match 매크로 사용

  • let-values 매크로 사용
  • (use gauche.time)
    (use util.match)
    
    (define (use-match lis)
      (match lis
        ((a b c d e)
         (+ a b c d e))))
    
    (define (use-let-values lis)
      (let-values (((a b c d e) (apply values lis)))
        (+ a b c d e)))
    
    (define lis '(1 2 3 4 5))
    
    (time-these/report '(cpu 3.0)
      `((match . ,(cut use-match lis))
        (let-values . ,(cut use-let-values lis))))
    
    실행 결과.
    Benchmark: ran match, let-values, each for at least 3.0 cpu seconds.
           match: 3.098 real, 3.080 cpu (3.070 user + 0.010 sys)@8370535.71/s n=25781250
      let-values: 2.225 real, 3.170 cpu (3.080 user + 0.090 sys)@4066443.22/s n=12890625
    
                      Rate match let-values
           match 8370536/s    --      2.058
      let-values 4066443/s 0.486         --
    

    참고 자료

  • match
  • let-values
  • time-these/report
  • 좋은 웹페이지 즐겨찾기