Просто чтобы быть тщательным: первое, что нужно сделать, это собрать данные профиля, а второе, что нужно сделать, это рассмотреть ваши алгоритмы. Я уверен, что вы это знаете, но они должны быть включены в любое обсуждение программирования производительности.
Чтобы ответить на ваш вопрос "Может ли помочь переход на ASM?" ответ: «Если вы не знаете ответ на этот вопрос, то, вероятно, нет». Если вы не очень хорошо знакомы с архитектурой процессора и его входами и выходами, маловероятно, что вы будете выполнять работу значительно лучше, чем хороший оптимизирующий компилятор C / C ++ в своем коде.
Следующее, что нужно сделать, - это то, что значительное ускорение вашего кода (кроме алгоритмических улучшений) почти наверняка будет вызвано параллелизмом, а не линейным увеличением. Настольные машины теперь могут использовать 4 или 8 ядер для выполнения задачи, которая имеет гораздо больший потенциал производительности, чем чуть лучший генератор кода. Поскольку вам удобно с C / C ++, OpenMP в значительной степени прост; это очень легко использовать для распараллеливания ваших циклов (очевидно, вы должны следить за зависимостями, переносимыми циклами, но это определенно «самый простой параллелизм, который мог бы работать»).
Сказав все это, качество генерации кода различается в разных компиляторах C / C ++. Компилятор Intel C ++ высоко ценится за качество оптимизации и имеет полную поддержку не только для OpenMP, но и для других технологий, таких как Threading Building Blocks.
Если перейти к вопросу о том, какие языки программирования могут быть даже лучше, чем C ++, ответ будет «языки программирования, которые активно продвигают / облегчают концепции параллелизма и параллельного программирования». Эрланг в этом отношении - самый важный момент, и сейчас он является «горячим» языком, и большинство людей, интересующихся программированием производительности, обращают на него хоть какое-то внимание, поэтому, если вы хотите улучшить свои навыки в этой области, вы можете хочу проверить это.