"어리석게 쉬운"매우 상대적인 용어이다. "시작하기"는 바로 그 것입니다. C에서 강력한 확장 기능을 작성하려면 참조 계산, 메모리 할당/해제 및 오류 처리와 같은 사항에주의를 기울여야합니다. Cython이 당신을 위해 그 일을 많이합니다.
Cython의 비 유니 코드 문자열은 Python str 개체이거나 C의 char 배열입니다. 필요한 Cython 관련 설명서는 무엇이라고 생각하십니까?
직접 시도해 보시기 바랍니다. 하지만 그렇게하기 전에 비효율에 대한 Python 코드를 검사하는 것이 좋습니다. 때로는 큰 스피드 업을 어리석게 쉽게 얻을 수 있습니다.
re.sub(' +', ' ', s) # one space in pattern
를 사용하여 공백 문자의 런 압축 예컨대
는 ... 런이 1의 길이를 갖는 것으로 추정 흔한 경우가 공백 스페이스를 교체 할 것을 의미한다. 모든 실행에 길이 1이 있으면 입력 문자열의 참조 횟수를 쉽게 늘리거나 줄이거 나 늘릴 수 없을 때 새로운 대체 문자열을 만들어 다시 전달합니다.
re.sub(' +', ' ', s) # two spaces in pattern
정확히 같은 결과를 생산하고 보자 ... 빠르게 실행할 수 있습니다 :
모든 길이 1을 실행 : 그것은에서 3.4 배의 속도를 실행합니다. 표시되지 않음 : 입력 문자열이 길면 길수록 좋습니다.
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 8.26 usec per loop
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 2.41 usec per loop
하나의 런 길이가 2 인 경우 속도 비는 2.5입니다. 모든 런이 길이 2 인 경우 속도 비는 1.2입니다. 모든 것을 고려한 결과, 1 회의 키 입력에 대한 나쁜 수익이 아닙니다.
+1 ... Cython에 대한 링크는 ... 처음 들어서 들었습니다. 흥미로운 :-) –
어떤 종류의 문자열 조작입니까? – Miles