привет к все
случай:
Исследование производительности - использование процессора.
результат:
1. Около 35% процессорного времени используется на SHA-256 вычислений.
2. Примерно 17% используется при добавлении новых блоков в blockchain.
Вывод:
На самом деле вычисление SHA-256 является своего рода медленный, и после улучшения этого являются производительность приложения может быть улучшено очень много. Как выглядит сейчас это можно сделать в 10 раз быстрее, с готовностью, которая могла бы ускорить всю систему Bitcoin очень.
сомнения:
Я думал, Yupieee! Давай сделаем это! Используйте более быстрый ша реализации! Но потом я начала сомневаться: Вероятно, есть причина, почему текущая реализация сохраняется (вместо того, чтобы использовать что-то вроде https://github.com/weidai11/cryptopp), Который я еще не знаю.
Вопросов:
Можем ли мы изменить реализацию SHA-256 с чем-то быстрее? Если нет, то, что может быть причиной: безопасность, читаемость кода, или используя ассемблер внутри запрещенное?
Технические подробности:
Профилирование результата для bitcoind (глядя с пустым блоком-цепью, и рабочее время около 30 минут):
https://s10.postimg.org/ukg7su3u1/profiling_bitcoin.png
Slowest метод sha256 :: Transform & crc32c :: Extend (еще один хороший кандидат для оптимизации).
Выходной файл Valgrind можно скачать здесь: http://www.filedropper.com/bitcoindloadingblockchaincallgrindout
Bitcoin ядро версии 0.12 взято отсюда https://github.com/bitcoin/bitcoin/tree/0.12
Операционная система: Ubuntu 16,4
PROCESOR: Intel (R) ядро (TM) i3-3240 CPU @ 3.40GHz
Объятия,
Gercio