스칼라에서 기능적으로 프로그래밍 할 때 재귀에서 배열을 사용하는 것이 효율적입니까?

사용자 13392352

기능적 접근 방식을 취하는 경우 이것이 가장 효율적인 방법입니까?

@tailrec
def readLine(in: SomeTypeOfBuffer, a: Array[Byte]): Array[Byte] = {
    val char = in.readByte()
    char match{
        case '\n'  => a 
        case other => readLine(in, a :+ other) 
    }

}

각 재귀 호출은 새 배열을 만들기 때문에 다른 배열을위한 공간을 할당하기 위해 메모리에 대한 또 다른 호출이 이루어져야하며 이전 배열은 메모리에서 해제됩니다.

이것은 함수형 프로그래밍의 가격일까요?

(나는 스칼라에 비교적 익숙하지 않고 기능 적이기 때문에 끔찍하게 잘못된 것이 있다고해서 나를 못 박아주지 마십시오)

루이스 미구엘 메 지아 수아레스

@DeFuncT가 말했듯이 빌드 할 때 데이터를 복사하지 않기 때문에 (불변) 목록 을 사용하는 것이 좋습니다 . 그 방법을 보여 드리겠습니다.

@QuickSilver의 조언도 적용 할 것입니다.

def readLine(in: SomeTypeOfBuffer): List[Byte] = {
  val NewLine: Byte = '\n'.toByte

  @annotation.tailrec
  def loop(acc: List[Byte]): List[Byte]
    in.readByte() match {
      case NewLine => acc.reverse
      case char    => loop(other :: acc)
    }

  loop(acc = List.empty)
}

PS : 일반적인 Scala에서는 Array를 볼 수 없습니다 . 아마도 새로운 ArraySeq 또는 Vector .
일반 배열은 일반적으로 성능상의 이유로 만 사용되며 일반적으로 단일 메서드의 범위에 포함됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

느린 IO를 처리하지 않을 때 성능 관점에서 리 액티브 프로그래밍을 사용하는 것이 합리적입니까?

분류에서Dev

값이 세트에 있는지 확인할 때 목록을 세트로 변환하는 것이 전반적으로 더 효율적입니까?

분류에서Dev

적절한 응답을받을 때까지 서버를 재귀적이고 효율적으로 호출하는 방법은 무엇입니까?

분류에서Dev

이것은 Linux 프로그래밍에서 파일을 동시에 처리하는 효율적인 방법입니까?

분류에서Dev

Openlayers 4.11 : 프로그래밍 방식으로 기능을 선택할 때 적용되는 스타일 없음

분류에서Dev

스칼라 2.13에서 때때로 명시 적으로 유형 클래스를 호출하는 것이 불가능한 이유는 무엇입니까?

분류에서Dev

document.getElementsByClassname을 사용하는 것과 비교하여 자바 스크립트에서 DOM을 재귀 적으로 내려 오는 것이 비효율적입니까?

분류에서Dev

xamp에서 phpmyadmin을 처음 열 때 스칼라 값을 배열로 사용할 수 없습니다.

분류에서Dev

IntelliJ가 메서드 스텁을 프로그래밍 방식으로 구현할 때 기본적으로 각 메서드를 재정의하는 이유는 무엇입니까?

분류에서Dev

예를 들어 파일에 줄을 쓸 때 재귀 함수 내에서 '사용'을 사용하는 메모리 효율적인 방법이 있습니까?

분류에서Dev

Codeigniter에서 스칼라 값을 배열로 사용할 수 없습니까?

분류에서Dev

파이썬에서 np 배열을 사용하여 다차원을 효율적으로 조작하는 방법은 무엇입니까?

분류에서Dev

소켓 프로그래밍을 할 때 accept 기능에 잠금을 사용해야합니까?

분류에서Dev

2 목록에서 스칼라 값을 재귀 적으로 얻는 방법은 무엇입니까?

분류에서Dev

새 글꼴 기능을 사용하여 프로그래밍 방식으로 TextView에 글꼴을 설정할 때 NoSuchMethodError가 발생합니다.

분류에서Dev

배열을 사용할 수 있지만 구조를 C에서 스칼라로 사용할 수있는 이유는 무엇입니까?

분류에서Dev

iOS 애플리케이션에서 HTML / DOM을 프로그래밍 방식으로 변환하는 데 사용할 수있는 기술은 무엇입니까?

분류에서Dev

움직이는 창 numpy 배열에 효율적으로 기능 적용

분류에서Dev

Python에서 Pandas를 사용하여 데이터 프레임을 datetime 항목으로 효율적으로 재구성하는 방법은 무엇입니까?

분류에서Dev

Pandas에서 조건을 기반으로 값을 할당하는 효율적인 방법은 무엇입니까?

분류에서Dev

스칼라 스파크 스트리밍에서 foreach를 사용할 때 문자열을 유형으로 원하지 않습니까?

분류에서Dev

커널 프로그래밍에 OOP 개념을 많이 적용 할 수없는 이유는 무엇입니까?

분류에서Dev

포인터에 NULL을 할당하는 것이 잘못된 프로그래밍입니까?

분류에서Dev

promise API를 호출 할 때 배열을 효율적으로 집계하는 방법은 무엇입니까?

분류에서Dev

numpy 배열의 인덱스에 조건을 효율적으로 적용하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 큰 테이블을 여러 테이블로 분할하거나 하나를 고수하는 것이 더 효율적입니까?

분류에서Dev

Codable을 사용하여 Firestore 문서를 변환 할 때 fieldNameConflicts 클라이언트 측을 효과적으로 방지하는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 사용자 입력을 효율적으로 기록하고 데이터베이스에 저장하는 방법은 무엇입니까?

분류에서Dev

SQL-ORM을 사용할 때 many_to_many 관계에 피벗 테이블을 사용하지 않는 것이 때때로 합리적입니까?

Related 관련 기사

  1. 1

    느린 IO를 처리하지 않을 때 성능 관점에서 리 액티브 프로그래밍을 사용하는 것이 합리적입니까?

  2. 2

    값이 세트에 있는지 확인할 때 목록을 세트로 변환하는 것이 전반적으로 더 효율적입니까?

  3. 3

    적절한 응답을받을 때까지 서버를 재귀적이고 효율적으로 호출하는 방법은 무엇입니까?

  4. 4

    이것은 Linux 프로그래밍에서 파일을 동시에 처리하는 효율적인 방법입니까?

  5. 5

    Openlayers 4.11 : 프로그래밍 방식으로 기능을 선택할 때 적용되는 스타일 없음

  6. 6

    스칼라 2.13에서 때때로 명시 적으로 유형 클래스를 호출하는 것이 불가능한 이유는 무엇입니까?

  7. 7

    document.getElementsByClassname을 사용하는 것과 비교하여 자바 스크립트에서 DOM을 재귀 적으로 내려 오는 것이 비효율적입니까?

  8. 8

    xamp에서 phpmyadmin을 처음 열 때 스칼라 값을 배열로 사용할 수 없습니다.

  9. 9

    IntelliJ가 메서드 스텁을 프로그래밍 방식으로 구현할 때 기본적으로 각 메서드를 재정의하는 이유는 무엇입니까?

  10. 10

    예를 들어 파일에 줄을 쓸 때 재귀 함수 내에서 '사용'을 사용하는 메모리 효율적인 방법이 있습니까?

  11. 11

    Codeigniter에서 스칼라 값을 배열로 사용할 수 없습니까?

  12. 12

    파이썬에서 np 배열을 사용하여 다차원을 효율적으로 조작하는 방법은 무엇입니까?

  13. 13

    소켓 프로그래밍을 할 때 accept 기능에 잠금을 사용해야합니까?

  14. 14

    2 목록에서 스칼라 값을 재귀 적으로 얻는 방법은 무엇입니까?

  15. 15

    새 글꼴 기능을 사용하여 프로그래밍 방식으로 TextView에 글꼴을 설정할 때 NoSuchMethodError가 발생합니다.

  16. 16

    배열을 사용할 수 있지만 구조를 C에서 스칼라로 사용할 수있는 이유는 무엇입니까?

  17. 17

    iOS 애플리케이션에서 HTML / DOM을 프로그래밍 방식으로 변환하는 데 사용할 수있는 기술은 무엇입니까?

  18. 18

    움직이는 창 numpy 배열에 효율적으로 기능 적용

  19. 19

    Python에서 Pandas를 사용하여 데이터 프레임을 datetime 항목으로 효율적으로 재구성하는 방법은 무엇입니까?

  20. 20

    Pandas에서 조건을 기반으로 값을 할당하는 효율적인 방법은 무엇입니까?

  21. 21

    스칼라 스파크 스트리밍에서 foreach를 사용할 때 문자열을 유형으로 원하지 않습니까?

  22. 22

    커널 프로그래밍에 OOP 개념을 많이 적용 할 수없는 이유는 무엇입니까?

  23. 23

    포인터에 NULL을 할당하는 것이 잘못된 프로그래밍입니까?

  24. 24

    promise API를 호출 할 때 배열을 효율적으로 집계하는 방법은 무엇입니까?

  25. 25

    numpy 배열의 인덱스에 조건을 효율적으로 적용하는 방법은 무엇입니까?

  26. 26

    MySQL에서 큰 테이블을 여러 테이블로 분할하거나 하나를 고수하는 것이 더 효율적입니까?

  27. 27

    Codable을 사용하여 Firestore 문서를 변환 할 때 fieldNameConflicts 클라이언트 측을 효과적으로 방지하는 방법은 무엇입니까?

  28. 28

    JavaScript를 사용하여 사용자 입력을 효율적으로 기록하고 데이터베이스에 저장하는 방법은 무엇입니까?

  29. 29

    SQL-ORM을 사용할 때 many_to_many 관계에 피벗 테이블을 사용하지 않는 것이 때때로 합리적입니까?

뜨겁다태그

보관