나는 똑같은 일을하는 두 가지 다른 방법을 썼다. 어느 것이 더 빨리 실행되는지 비교하고 싶습니다. 물론 벤치 마크는 항상 가능하지만 프로그램 벤치 마크는 기계마다 다를 수 있으며 많은 외부 요인의 영향을받을 수 있습니다. 벤치 마킹없이 어느 것이 더 빠를지 어떻게 계산할 수 있습니까? 내 생각은 당신이 프로그램에서 수행 된 모든 작업의 시간을 합산하는 것입니다. 이것은 표준적인 일입니까? 벤치마킹을 할 때 많은 오류가있는 것처럼 보입니다.프로그램의 이론적 인 속도를 계산 하시겠습니까?
답변
제 생각에는 프로그램에서 수행 한 모든 작업의 시간을 합산하는 것입니다.
예, 그렇지만 벤치마킹 이외의 다른 방법으로는 해당 시간을 쉽고 확실하게 파악할 수 없습니다.
문제는 이러한 시간이 이전에 프로그램에서 (또는 시스템 전체에서) 발생한 동적 컨텍스트에 달려 있다는 것입니다. CPU는 복잡한 짐승이며, 캐시 효과 (데이터 캐시 및 명령어 캐시)는 종종 중요한 요소입니다. 분기 예측도 마찬가지입니다. Why is it faster to process a sorted array than an unsorted array?
어셈블리 언어로 된 작은 루프의 정적 분석이 가능합니다. 예 : Agner Fog's microarchictecture pdf and instruction tables에 기반한 캐시 미스가 없다고 가정하면, 간단한 루프가 인텔 하스웰에서 실행할 수있는 반복 횟수를 정확하게 예측할 수 있습니다. 그 이상으로 가면 추측이 더 많이 포함됩니다.
Ruby와 같은 고급 해석 언어의 성능은 코드를 튜닝하는 데 많은 시간을 소비하는 전문가에게는 다소 예측할 수 있지만 "실제로는"이 마이크로 초의 숫자가 걸릴 것 "이 아니라"이것은 아마도 조금이나 그보다 훨씬 빠르다. "
알고리즘의 복잡성은 알고리즘에 대한 이론적 인 속도 비교를 제공합니다.
귀하의 질문은 임의의 프로그램에 관한 것이지만 프로그램은 알고리즘 모음 이상입니다.
프로그램의 실행 속도는 실행중인 컨텍스트 (I/O, 운영 체제 (멀티 태스킹 여부), 하드웨어)에 따라 다릅니다.
따라서 벤치 마크에 대한 정의 인 측정 값에 대한 통계 이외의 다른 방법은 없습니다.
- 1. C 프로그램의 계산 속도를 향상
- 2. jQuery - 이론적 인 차트 애니메이션
- 3. 웹 페이지의 속도 테스트 : 이론적 인 로딩 속도를 얻는 방법
- 4. 이론적 텍스트 파일의 크기 계산
- 5. ... 내가 이론적 인 질문이 PHP
- 6. Android에서 현재 모바일 연결 속도를 계산 하시겠습니까?
- 7. 평균 데이터 흐름 속도를 계산 하시겠습니까?
- 8. 계산 집약적 인 C# 프로그램의 이점이 있습니까?
- 9. 내 C 프로그램의 실행 시간을 계산 하시겠습니까?
- 10. multithreading (scaling)에 대한 이론적 인 질문
- 11. 프로그래밍에 관한 이론적 인 것을 알고 싶다.
- 12. 클라이언트 - 서버 동기화 방법론 [이론적 인]
- 13. 내가 정리하려는 약간 이론적 인 질문이
- 14. 측정 된 GFLOPS는 이론적 인 GFLOPS보다 큽니다.
- 15. WPF 프로그램의 속도를 높이려면 어떻게해야합니까?
- 16. 소켓을 통해 송수신되는 데이터의 대역폭 속도를 계산 하시겠습니까?
- 17. 입자가 서로 튀어 오르는 속도를 어떻게 계산 하시겠습니까?
- 18. 내 프로그램의 실행 시간 계산
- 19. 다른 응용 프로그램의 속도를 변경하십시오.
- 20. 멀티 스레딩 C++ 프로그램의 집중적 인 계산 중 고정
- 21. 내 게임 속도를 제어 하시겠습니까?
- 22. gnuplot csplines의 이론적 기초
- 23. 데이터베이스 정규화 이론적 작업
- 24. iphone 응용 프로그램의 배경과 전경 사이의 시간을 계산 하시겠습니까?
- 25. 알고리즘 분석 - 이론적 접근
- 26. Apache "Order"지시어의 이론적 근거
- 27. preg_replace와 순차적 인 계산
- 28. 디자인의 이론적 근거이 뒤에 디자인의 이론적 근거가 무엇
- 29. 이메일 첨부 파일을 관리 할 때 이론적 인 MAX_SIZE는 무엇인가요?
- 30. 이론적 인 속도 향상이 이루어지지 않음 - 커널 분리 성
[알고리즘 복잡성] (https://en.wikipedia.org/wiki/Analysis_of_algorithms)에 대한 연구입니다. – Phylogenesis
나는 루비 프로그램에서 각 작업이 어떻게 해석되는지, 어떤 객체가 만들어 지는지 등에 대한 깊은 지식이 필요하기 때문에 이것은 매우 어렵다고 생각한다. 많은 반복을 통한 벤치마킹이 최선의 방법이라고 생각합니다. – Albin
또한 벤치마킹이 표준입니다. 맞습니까? – thesecretmaster