Я передаю программу FORTRAN Monte Carlo на C++ и обнаружил, что при полной передаче программа на C++ работает почти в два раза медленнее, чем программа FORTRAN. Я пытаюсь подготовить вторую версию программы на C++, где многие функции вводятся в линию с использованием структур классов для ускорения работы; однако некоторые из функций превышают 40 или 50 строк, и я прочитал, что приведение больших функций в линию может замедлить работу программы. Что слишком велико, когда дело доходит до ввода функций в линию и как я могу ускорить работу на C++ (без многопроцессорной обработки), чтобы программа на C++ могла работать так же быстро или почти так же быстро, как программа FORTRAN?Как ускорить выполнение C++ с помощью встроенных функций?
ответ
Вложение в C++ - это только предложение для компилятора. Если функция слишком сложная, она не будет встроена большинством современных компиляторов. Компилятор сделает все возможное, чтобы оптимизировать вызовы в любом случае, даже без ключевого слова inline, до тех пор, пока реализация будет доступна, когда она будет скомпилирована. Существуют также компиляторы, которые будут встроены в единицы компиляции, но это менее распространено.
В любом случае, маловероятно, что вызовы функций доминируют над временем обработки. Вероятно, вы хотите профилировать свой код, чтобы выяснить, где именно находится узкое место, прежде чем вкладывать слишком много усилий в микро-оптимизации, которые, вероятно, компилятор делает для вас в любом случае.
Позвольте задать вопрос другим способом. Я привык к FORTRAN, где компилятор уже оптимизирован для эффективности и скорости, поэтому многие из комментариев, сделанных здесь, несовместимы со мной. Какие другие факторы могут привести к тому, что код будет работать медленнее и какие инструменты я могу использовать, чтобы определить, какие из них наиболее ответственны. Я никогда не использовал инструмент профилирования, и в результате я не знаю, где его получить, любые предложения о том, где найти документ с документацией о том, как его использовать, будут значительно восприняты. – Jon
В какой среде вы работаете? Linux? Окна? OSX? И C++ также оптимизирован для эффективности и скорости. Скорее всего, некоторая библиотека, которую вы используете, не так быстро, как в Fortran. – Joel
Я использую OSX с XCode; тем не менее, большая часть моего программирования связана с командной строкой, и я должен признать, что на данный момент я не уверен в знании всех колоколов и свистков на XCode, но я собираюсь изменить это в ближайшем будущем. – Jon
- 1. Выполнение встроенных определений функций Python
- 2. C++ объем встроенных функций
- 3. Как ускорить выполнение программы
- 4. C++ Встроенных функций Прототипы
- 5. Выполнение встроенных функций из VBA (Excel)
- 6. Тестирование встроенных/встроенных функций
- 7. Вызов без встроенных функций от встроенных функций
- 8. Печать DataGridView с использованием встроенных функций? C#
- 9. переключатель SSE с помощью шаблонов встроенных функций
- 10. Как ускорить выполнение python
- 11. ехЬегп встроенных функций в C++ для выполнения
- 12. Выполнение функций строки C
- 13. Как ускорить выполнение System.Diagnostics.Process?
- 14. Как ускорить выполнение кода?
- 15. Использование встроенных функций php
- 16. Выполнение невыполненных DLL-функций с помощью python
- 17. Как ускорить код C++ с помощью CUDA
- 18. Как избежать анонимных/встроенных функций
- 19. Как запросить wp_usermeta с помощью встроенных функций WordPress эффективно?
- 20. Как просмотреть код встроенных функций с помощью Python IDLE?
- 21. Как найти длину числа с помощью встроенных функций NCalc?
- 22. Несогласованное поведение встроенных функций при перегрузке встроенных функций в Octave
- 23. Как улучшить эффективность встроенных функций?
- 24. На примере глобальных встроенных функций в C++
- 25. Работа встроенных функций javascript
- 26. Как ускорить выполнение теста Grails
- 27. Как ускорить выполнение этого запроса
- 28. Принцип встроенных функций python?
- 29. C++ Есть ли способ ускорить выполнение программы?
- 30. проверить скорость встроенных и не встроенных функций
Невозможно сказать, не видя результатов запуска профилировщика в вашей программе. – dasblinkenlight
Вы уверены, что накладные расходы вызваны вызовами функций? – juanchopanza
Вы использовали какой-либо инструмент для профилирования, чтобы сначала увидеть, где именно находятся узкие места? – OldProgrammer