Если вам нужно сравнить одномерные массивы C с structs
, вы можете попробовать memcmp()
, чтобы увидеть, является ли он более эффективным, чем цикл for
.Если вы можете позволить себе какой-то вид хэша массива, вы можете значительно повысить производительность в случаях, когда массивы различаются.Например, если у вас есть массив чисел с плавающей точкой, вы можете использовать их сумму в качестве хэша.Если хэши массивов различаются, вам не нужно сравнивать массивы вообще.С другой стороны, если вы ожидаете, что массивы фактически равны в большинстве случаев, вычисление хеша только замедлит ход событий.
Может помочь и творческий подход с вычислением хеша.В случае двумерных массивов хэш может быть полиномом хэшей массива 1D или даже struct
с метаданными, такими как размеры массивов, хэш хэшей массива 1D и т. Д.примерно в 2 раза быстрее, чем прямой однопоточный цикл for
при сравнении больших массивов с плавающей точкой в худшем случае (когда массивы равны).