Предположим, что вы сделали оптимальную реализацию (это может быть действительно сложно в зависимости от проблемы).
Вы разделили блоки без перекрытия и подали их в потоки.
Пока чтохорошо.
Прежде всего создание и завершение (и, возможно, управление) потока занимает время, которое добавляется к уже вычисленному времени вычислений.Это может привести к накладным расходам, которые убьют вашу выгоду.
Но, что я думаю, более важно, может быть то, что у вас есть процессор i3, у многих из них просто есть 2 ядра, и в зависимости от того, активирована ли гиперпоточность, у вас также есть 2логические ядра.И для таких систем вы не можете воспользоваться более чем двумя потоками (если они могут использовать все ресурсы), третий поток может просто помешать двум другим, создавая более длительное время выполнения.