2013-04-12 3 views
0

Ruby 버전의 Erik Demaine (MIT) docdist8.py를 작성했습니다. 이것은 github에서 docdist-v3.rb으로 이용할 수 있습니다. 블록 주석이 inner_productRuby 블록 주석 및 프로필 질문

1) 기능에 : 나는 상황이 이상한 종류를 직면

Inner product between two vectors, where vectors 
are repeated as dictionaries of (word, freq) pairs. 
Example : inner_product({"and":3, "of":2, "the":5}, 
         {"and":4, "in":1, "of":1, "this":2}) = 14.0 

나는 이것을 포장 = 시작 = 끝이 아무 문제가없는 경우,하지만 난 랩하는 경우 = 시작부터 다르다 ""와 = 끝 : 그것은 ""트리플 더블 따옴표와 함께 "

./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND 
    Example : inner_product({"and":3, "of":2, "the":5}, 
             ^
./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND 
    Example : inner_product({"and":3, "of":2, "the":5}, 
               ^
./docdist-v3.rb:72: syntax error, unexpected kIN, expecting kEND 
...     {"and":4, "in":1, "of":1, "this":2}) = 14.0 
          ^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND 
...   {"and":4, "in":1, "of":1, "this":2}) = 14.0 
          ^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND 
..."and":4, "in":1, "of":1, "this":2}) = 14.0 
         ^

는/허용에 대한 항목이 규칙입니다 다음과 같이 나는 오류를 얻을"?

2) 시간 명령으로 프로그램을 실행하면 약 0.3 초 ​​후에 실행됩니다. 그러나 필자가 요구하는 '프로파일'을 입력하면 30 초가 소요되는 매우 빠른 시간이 소요됩니다. 그러므로 나는 정확한 결과를 얻지 못한다. 프로파일 링에 약간의 시간이 걸리는 원래 Python 버전에서는 그렇지 않습니다. Ruby에서 동일한 프로파일을 실행하려면 어떻게해야합니까?

참고 : Ruby 프로그램을 실행하는 데 사용한 두 파일은 t2.bobsey.txt 및 t3.lewis.txt입니다.

=begin 
Comment 
=end 

당신은 실제로 사용되지 않습니다 문자열을 만드는 :

""" 
Not a comment 
""" 
# => "\nNot a comment\n" 

오류 때 얻을 왜 그들은 항상 형태가 http://ocw.mit.edu/ans7870/6/6.006/s08/lecturenotes/dd_data.htm

+0

삼중 따옴표는 루비 주석을 표시하지 않습니다를. –

답변

0

1) 댓글 차단에 사용할 수있는 또 다른 따옴표를 추가하기 때문에 구문 강조가 문자열로 렌더링됩니다.

2) 프로파일 러와 느리다하지만 동일한 결과를 얻을 :

ruby docdist-v3.rb t2.bobsey.txt t3.lewis.txt 
File t2.bobsey.txt:262111 lines,49785 words,3354 distinct words 
File t3.lewis.txt:1015474 lines,182355 words,8530 distinct words 
The distance between the documents is: 0.574160 (radians) 
+0

"" "내게 미스테리를 분명히 해줘서 고마워. 내가 모든 의견 블록을 = 시작하고 = 끝내려면 지금 docdist-v5.rb [링크] (https://gist.github.com/mh-github/5379949) 'profile'이 필요하고 'profile'이 필요하면 몇 초가 걸릴까요? 나를 위해, 보통의 실행 시간 인 약 0.3 초에서 Ruby는 프로필로 약 30.5 초 걸립니다. 또한 실행 시간을 정확하게보고하지 않습니다 그래서 내 질문 : 루비에서 너무 많은 오버 헤드를 추가하지 않고 시간 명령을 사용하지 않고 정확하게 CPU 시간을 얻지 않고 어떻게 프로파일 링합니까? – user1575148

+0

[ruby-prof] (https : // gitub.com/reby-prof/ruby-prof) 더 나은 대안입니다 .BTW, 그냥 기존의 Gist를 업데이트 할 수 있습니다. GitHub는 업데이트 내역을 유지합니다. – Stefan

+0

요점 주셔서 고마워요 .Liby 1.8.6을 사용하고있었습니다. prof는 1.8.7 이상이 필요합니다. 그래서 R uby 1.8.7. 이상하게도 docdist-v5.rb는 Ruby 1.8.7에서 느리게 실행됩니다. ruby-prof가 출력 시간을 0 초로보고합니다. 1.8.6과 시간 명령에 충실해야 할 것 같습니다. 이제는 프로그램 속도를 높이는 유일한 방법은 Rub보다 Py보다 빠른 Python의 string.maketrans 유틸리티를 제공하는 것입니다. – user1575148