나는 2의 거듭 제곱이 아닌 숫자로 나누기위한 짧은 어셈블러 코드를 작성하기로되어있었습니다. 제 해결책은 사이클에서 디바이더를 빼는 것이었고 사이클의 수는 실제 결과였습니다. 더 빠른 것이 있습니까? 이 문제를 해결하는 일반적인 방법은 무엇입니까?부서는 얼마나 빠릅니까?
4
A
답변
2
반복되는 빼기는 나누기를 위험하게 비효율적 인 방법입니다. 최악의 경우 N 비트 단위로 O(2**N)
을 사용할 수 있습니다!
@ Johannes 대답에는 그보다 훨씬 나은 알고리즘을 제공하는 링크가 있습니다.
어셈블러에서 부서를 구현하도록 요청 받았으면 기존 루틴 숫자 라이브러리를 광범위하게 검색해야 할 것입니다. 이것은 최적의 코드에 가깝도록 많은 전문 지식을 필요로하는 종류의 문제입니다.
편집 :
그것은 내가 지금 C++에서 일부 프로그램을 만들고있어 그냥 그리고 내가 사용하는 부문은 하나의 문제를 해결하거나 다른 뭔가를 만들어 여부를 결정 해요 : 영업의 코멘트에 응답 빨리하기.
제발 그냥 나누기를 사용하고 특정 대상 플랫폼에 필요한 결과를 얻기 위해 가장 효율적인 명령 시퀀스를 생성하기 위해 C++ 컴파일러에 두는 것이 좋습니다.
2
관련 문제
- 1. simplexml_load_file()은 얼마나 빠릅니까?
- 2. php_uname()은 얼마나 빠릅니까?
- 3. Dreamweaver의 속도는 얼마나 빠릅니까?
- 4. LINQ는 얼마나 빠릅니까?
- 5. MySQL은 얼마나 빠릅니까?
- 6. Data.Array는 얼마나 빠릅니까?
- 7. 보통 디스크보다 메모리가 얼마나 빠릅니까?
- 8. Google App Engine은 얼마나 빠릅니까?
- 9. 부서는 MIX에서 어떻게 작동합니까?
- 10. Mongodb에서 ObjectId를 검색하는 것이 얼마나 빠릅니까?
- 11. MySQL의 datetime 열보다 타임 스탬프가 얼마나 빠릅니까?
- 12. Windows EventLog : 작업 속도는 얼마나 빠릅니까?
- 13. 버클리 DB SQL은 SQLite와 비교해 얼마나 빠릅니까?
- 14. Google App Engine MapReduce은 얼마나 빠릅니까?
- 15. PHP + MySQL로 DB를 전환하는 속도는 얼마나 빠릅니까?
- 16. 안드로이드 네트워크 위치 제공자는 얼마나 정확하고 빠릅니까?
- 17. Perl에서 문자열 연산은 얼마나 빠릅니까? 특히 연결과 할당
- 18. 다른 문자열 처리 방법과 비교하여 String.Substring이 얼마나 빠릅니까?
- 19. 빅 엔디안에서 리틀 엔디안으로 변환하는 절차는 얼마나 빠릅니까?
- 20. 데이터베이스 운영을위한 Windows 파일 시스템의 속도는 얼마나 빠릅니까?
- 21. Objective C에서 할당 및 할당 해제는 얼마나 빠릅니까?
- 22. VB .net과 산술 원시 코드를 비교하면 얼마나 빠릅니까?
- 23. 파이썬에서 목록이나 사전이 더 빠릅니까?
- 24. GDataXMLNode가 빠릅니까?
- 25. ASP.NET과 MySQL은 얼마나 잘 작동합니까?
- 26. 얼마나 얼마나 많은이 결과
- 27. 왜 LIKE가 =보다 빠릅니까?
- 28. gv와 cvs가 cvs보다 빠릅니까?
- 29. 어느 것이 더 빠릅니까?
- 30. 스레드 캐싱이 memcaching보다 빠릅니까?
어떤 프로세서입니까? 대부분의 내장형 연산 코드는 – Meinersbur
입니다. 숫자를 나누기 위해 뺄셈을 선택하여 가장 가난한 선택을했습니다 :) –
divison opcode가 없더라도 프로세서 아키텍처 나 어떤 지시를 받았는지, 어떤 지시가 빠르는지를 구체적으로 밝히십시오. 사업부가없는 프로세서의 경우 다른 일반적인 opcode가 없거나 느릴 수도 있습니다 (임의 비트 시프트 및 곱셈이 마음에 들었습니다). 일부 알고리즘에 영향을 줄 수 있습니다. 그러나 첫 번째 질문에 답하기 위해 : 네, 이런 종류의 알고리즘이 더 빠릅니다. – Grizzly