문제

REXX에서 길이 () 기능의 처리 오버 헤드는 문자열의 길이에 따라 어떻게 변합니까?


업데이트 : 사용 중입니다.

  • Uni-Rexx (R) 버전 297t
  • Open-Rexx (TM) 저작권 (C) IX Corporation 1989-2002. 판권 소유.
도움이 되었습니까?

해결책

오버 헤드는 0입니다. 길이는 디스크립터에 저장됩니다.

Neil Milsted Uni-Rexx의 저자 (농담 없음).

다른 팁

전적으로 구현에 따라 다릅니다. OS/2의 REXX, Z/VM의 REXX, Z/OS 용 Rexx, Windows의 경우 Oorexx, Rexx/400 또는 Regina를 의미합니까?

IBM의 렉스 언어 사양의 어떤 것도 커버에서 함수가 어떻게 구현되는지 지시하지 않으며, 스트링을 스캔하면 O (n) 또는 O (1) 길이가 문자열에 어딘가에 저장되는 경우 O (n) 일 수 있습니다.

그렇다면 진짜 벤치마킹 코드로 테스트하는 것이 가장 좋습니다. 길이가 차이가 있는지 확인하십시오.

잘 모르겠습니다. 나는 내 시대에 렉스를 썼지 만 길이 () 함수에 성능 문제가 없었습니다. 이 척도의 방식은 아마도 렉스 파서의 구현에 따라 다릅니다.

나는 10-character sting, 100 자 문자열에서 10.000 호출 "length ()"호출을 한 다음 1000 문자열에 rexx 스크립트를 작성합니다.

그래프에서 결과 시간을 플로팅하면 성능이 감소하는 방법에 대한 근사가됩니다.

이 모든 것을 말하면서, 내 추측은 O (n)에서와 같이 성능 감소가 최대 선형이라는 것입니다. (보다 http://en.wikipedia.org/wiki/big_o_notation)

언어 구현에 따라 다릅니다. 내가 지금 렉스를 쓴 지 오랜 시간이 걸렸다. :-)

자신의 테스트 루틴을 쓸 수 있습니다. 길이가 증가하는 문자열을 생성하고 고성능 타이머를 사용하여 길이 ()를 얻는 데 걸리는 시간을 측정하십시오. 시간과 문자열 길이를 텍스트 파일 기반 쉼표로 분리 된 테이블에 저장하면 사용하여 플롯 할 수 있습니다. gnuplot. 그리고 당신은 그것이 어떻게 비늘을 어떻게 명확하게 볼 수 있는지 볼 수 있습니다.

편집 : Rolf의 답변을 더 많이 썼기 때문에 먼저 Rolf의 답변을 확인해야했습니다. :-)

IBM 메인 프레임 버전, OS/2 용 클래식 렉스 버전 및 객체 REXX 구현에 대해서는 말할 수 있습니다. 길이는 문자열 설명자에 저장되므로 오버 헤드는 문자열 길이와 무관합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top