[함수형 사고] 4장 열심히보다는 현명하게

2019. 3. 11. 16:06·개념/함수형사고

함수형 사고로 패러다임을 바꾸면 더 적은 노력으로 더 많은 일을 할 수 있게 됩니다. 함수형 프로그래밍의 많은 구조들이 그렇습니다. 절차형 언어에서 볼 수 있는 문제들을 구현할 때 짜증 나던 것들을 제거해 줍니다.


메모이제이션

메모이 제이션은 연속해서 사용되는 연산값을 함수 레벨에서 캐시하는 것을 말합니다. 메모이제이션은 캐싱을 이용하여 처리합니다. 캐싱을 이용하기 위해서는 주어진 매개변수의 값만을 이용하고, 외부 데이터에 영향을 받지 않는 순수 함수를 이용해야 합니다.


다음은 스칼라에서 피보나치 함수를 캐싱을 이용하여 구현한 예제입니다.




처리 결과를 보면 다음처럼 2번째 처리부터 처리시간이 단축되는 것을 볼 수 있습니다.


Time taken: 9275948 ms
832040
Time taken: 2802375 ms
832040
Time taken: 2451631 ms
832040
Time taken: 2423518 ms
832040
Time taken: 2364615 ms
832040
Time taken: 3462807 ms
832040
Time taken: 2439583 ms
832040
Time taken: 2352566 ms
832040
Time taken: 2440029 ms
832040
Time taken: 2868864 ms
832040


게으름(Lazy Evalution)

표현의 평가를 가능한 최대로 늦추는 기법인 게으른 평가는 함수형 프로그래밍에서 많이 볼 수 있는 기능입니다. 게으른 평가를 이용하면 한번에 모든 데이터를 생성하지 않고 필요한 시간에 하나씩 생성합니다. 이를 통해 메모리상의 이점을 가질 수 있고 빠른 속도로 데이터를 처리할 수 있습니다.



반응형
저작자표시 비영리 (새창열림)

'개념 > 함수형사고' 카테고리의 다른 글

[함수형 사고] 6장 전진하라  (0) 2019.03.13
[함수형 사고] 5장 진화하라  (0) 2019.03.12
[함수형 사고] 3장 양도하라  (0) 2019.03.08
[함수형 사고] 2장 전환  (0) 2019.03.05
[함수형 사고] 1장 왜?  (1) 2019.03.04
'개념/함수형사고' 카테고리의 다른 글
  • [함수형 사고] 6장 전진하라
  • [함수형 사고] 5장 진화하라
  • [함수형 사고] 3장 양도하라
  • [함수형 사고] 2장 전환
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    Tez
    airflow
    nodejs
    build
    정올
    오류
    hbase
    Hadoop
    다이나믹
    oozie
    error
    yarn
    emr
    mysql
    HIVE
    하둡
    SPARK
    ubuntu
    하이브
    알고리즘
    HDFS
    AWS
    파이썬
    Linux
    S3
    Python
    java
    bash
    k8s
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[함수형 사고] 4장 열심히보다는 현명하게
상단으로

티스토리툴바