Размер кеша важен.Для этого я использую процессоры x86 и использую только кэш L2, который используется на двухъядерных процессорах.
Если вы сравниваете 2 одноядерных процессора с 1 двухъядерным процессором и одноядерными процессорамиоба имеют одинаковый объем кеша данных (работает с одинаковой скоростью), тогда у вас будет больше кеша, поэтому больше частей изображений может поместиться в кеш, и очень вероятно, что если обработка данных изображения должна была загружаться и/ или неоднократно сохраняйте эти данные, чтобы они шли быстрее при тех же тактовых частотах.
Если вы сравниваете 2 одноядерных процессора с 1 двухъядерным процессором, кэш данных которого в два раза больше, чем у каждого одноядерного процессоракеш данных, тогда около половины кеша данных будет использоваться для работы каждого процессора.Вполне вероятно, что в дополнение к данным изображения, которые должен использовать каждый независимый поток, будут некоторые общие данные.Если эти общие данные хранятся в общем кеше данных, то их легче распределить между двумя ядрами, чем при установке ядра 2xSingle.При настройке 2xSingle core для каждого куска совместно используемых данных один из кешей будет хранить его, и будет небольшая нагрузка, когда другой процессор будет нуждаться в использовании этих данных.
Двухъядерные машины также облегчают это.для потоков, чтобы мигрировать из одного ядра в другое на том же процессорном модуле, потому что кэш нового процессора потока не должен заполняться, в то время как другой содержит данные, которые ему больше не нужны, занимая место.
Я бы посоветовал вам поэкспериментировать с ограничением количества потоков от 3 до 10 на ядро в любое время для общего использования.Все потоки будут конкурировать друг с другом за это пространство кеша, поэтому слишком многие из них сделают так, что все данные из 1 потока будут вытеснены до того, как этот поток будет перепланирован.Кроме того, если каждый поток может зацикливаться на нескольких файлах изображений, вы получаете немного, поощряя пространство стека каждого потока оставаться в кэше, потому что у вас меньше стеков.Вы также уменьшаете объем памяти, который ОС должна использовать для поддержки потоков.
Вы выиграете, когда сможете перекрывать обработку при медленном доступе, таком как диск, сеть или взаимодействие с человеком,так что вам нужно только достаточное количество потоков для обработки процессоров.