Я согласен, это должно быть улучшено, и я согласен должна быть заставкой или отключен GUI, а вещи нагрузки. Казалось бы, что вы могли бы хранить временную информацию от последнего времени клиента был закрыт, чтобы отобразить при запуске, но серо-вне кнопки отправки денег. Затем пользователь может просматривать предыдущие данные транзакции, создавать новые адреса и т.д., в то время как бэкенд проходит и повторно проверяет blockchain. Можно даже поставить планку прогресса в рамках "Отправить" Кнопка, чтобы показать пользователь, почему он серый цвет. Это должно решить множество текущих проблем скорости, если многопоточность может быть сделана правильно (не спрашивайте меня, чтобы сделать это, я никогда не писал код МТА).
Но, я много думал об этом, как оптимизировать файл-чтение, и я работаю прототип прямо сейчас. К сожалению, без особого контекста о том, что уже есть в коде клиента, но это удовольствие для меня, так что я работаю на конечной эффективности blockchain файловой нагрузки. Я хотел бы услышать какие-либо мысли по этому процессу ...
По моим подсчетам, у нас есть около 400 МБ blockchain информации, которая для большинства жестких дисков должны занять около 5 секунд, чтобы читать. Это означает, что, по крайней мере, в то время как клиент предназначен для поддержания всей blockchain, мы никогда не бить 5 секунд времени загрузки для среднего пользователя. Это может быть не так уж плохо прямо сейчас, но это не собирается быть лучше. И, конечно же, это занимает гораздо больше времени, чем это потому, что blockchain должен быть обработан / проверяется, как это читать. Моя мысль ... что, если он не занимает дополнительного времени?
- (1) blockchain данные хранятся в файле точно так же, как двоичный формат будет храниться в памяти.
- (2) В памяти, выделяют 400 МБ хранения за сырой указатель uint8_t
- (3) Есть ли прямое копирование "blk0001file.read (ramChunkPtr, FileSize)"
- (4) Использование BlkHeaderPtr и TxPtr объекты - члены являются указатели на места в этом куске памяти вместо копий
- (5) Записать методы доступа просто разыменования указателей, в любое время
Накладные хранения этих указателей должны быть малы по сравнению с самим blockchain. И есть два варианта назначения указатели ... либо ходить через данные и назначить их вручную (что бы замедлить немного быть все var_ints), или хранить переменные байт-места в другом файле, (известный из последнего отключения клиента ). Черт, вы могли бы сделать точно такой же участок памяти идею с этим файлом, но еще быстрее, потому что все они являются постоянными ширины поля (и драматично меньше данных). В любом случае, это должно быть лучшим время эффективности возможно, оплаченная небольшим снижением эффективности пространства.