Я пытался выяснить, сколько хэшей я могу вычислить за это время. Я использую SHA-512 (SHA-2 с 512-битным выходом). Я не кодировал эту Hashfunction, но я сделал петлю для проверки, чтобы проверить ее. Я не очень владею C++, поэтому не знаю, почему возникла следующая ситуация.Как сделать for-lops точно работать на примере C++: вычисление хэшей
Когда я выполнил программу, вычисления заняли больше времени и дольше. В то время как у меня было около 10000 хешей с ним в первые несколько секунд, через несколько часов на компьютер ушло около минуты, чтобы вычислить 1000 хешей ... Может ли кто-нибудь сказать мне, почему и как «решить» это?
Это соответствующий код, я думаю:
int fortschritt = 0;
int prozent = 0;
string temp;
stringstream convert;
string loeschen;
for (int i = 1; i <= 4294967295; i++)
{
convert << i;
temp = convert.str();
loeschen = sha512(temp);
if (((int)(i/1000)) > fortschritt)
{
fortschritt = (int)(i/1000);
if (((int)(i*100)/4294967295) > prozent)
{
prozent = ((int)(i*100)/4294967295);
}
cout << fortschritt*1000 << " von 4294967295 - " << prozent << " %" << endl;
}
}
Результат выглядит следующим образом:
1000 von 4294967295 - 0 %
2000 von 4294967295 - 0 %
3000 von 4294967295 - 0 %
4000 von 4294967295 - 0 %
5000 von 4294967295 - 0 %
6000 von 4294967295 - 0 %
7000 von 4294967295 - 0 %
8000 von 4294967295 - 0 %
9000 von 4294967295 - 0 %
10000 von 4294967295 - 0 %
[...]
Я думаю, что это что-то делать с тем, как я использую переменные, но я я не уверен, и у меня нет идеи, как это сделать правильно. Простите меня, если это глупый вопрос, но это беспокоило меня какое-то время.
Заранее спасибо за любую помощь :)
Джон
Все эти деления не являются полезными для вашей программы, внесите дополнительный счетчик j, который переходит на 1000, чтобы ввести фортшетт, если вы его сбросите. – Surt