Обычный цикл с передачей данных (без обработки), уже отъедает львиную долю тактов ядра:
Пример
Add(Label,3644099,511,336)
{
Left=155
Top=80
}
Add(Button,15419145,385,329)
{
Left=45
Top=75
link(onClick,3908044:doStart,[])
}
Add(TimeCounter,3908044,462,329)
{
Precision=1
link(onStart,1068383:doFor,[])
link(onStop,3644099:doText,[])
}
Add(DoData,10152592,644,329)
{
Data=String(FF00FF00FF00FF00)
}
Add(For,1068383,574,329)
{
End=50000
link(onEvent,10152592:doData,[])
link(onStop,3908044:doStop,[(619,342)(619,381)(450,381)(450,342)])
}
[offtop]Я тут "пошаманил" у себя, ради интереса :
#cpp
QTime timer;
const char* data = "FF00FF00FF00FF00";
uint len = qstrlen(data);
uint MAX = 2000000000; //2 миллиарда
QVector<quint16> vec(MAX); //~3.7 гб ОЗУ (x64)
timer.start();
auto check = [&](quint16& i) {
i = qChecksum(data, len); //CRC-16
};
QtConcurrent::blockingMap(vec, check); // 4 ядра = 4 потока
qDebug() << timer.elapsed();
//результат 41510 ms или 41.51 сек
Ускорить можно, только подключив к процессу - GPU.
[/offtop]