REXX에서 Length ()의 처리 오버 헤드는 무엇입니까?
-
21-08-2019 - |
문제
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 구현에 대해서는 말할 수 있습니다. 길이는 문자열 설명자에 저장되므로 오버 헤드는 문자열 길이와 무관합니다.