Re[2]: Подсчет количества повторяющихся элементов в byte[]. Если метод быстрее?
От: Alex Warm Россия  
Дата: 30.12.13 06:52
Оценка: 26 (1)
Здравствуйте, SuhanovSergey, Вы писали:

SS>Направления оптимизации:

SS>1. Параллелизм
SS>2. Убирание лишних проверок (unsafe)
SS>3. Ускорение чтения входного массива путём итерирования по словам (машинным) вместо байтов

SS>Решения для 1 и 2 уже рассматривали. Привожу тесты, которые реализуют 2+3 и 1+2+3


SS>Результаты:

SS>
SS>              Simple:   155ms :    820658
SS>        Parallel For:    60ms :    820658
SS>               Words:    89ms :    820658
SS>      Words parallel:    35ms :    820658
SS>


Выполнение на андроиде для размера буфера 1382400 byte

              Simple:   109ms :    10951
        Parallel For:   170ms :    10951
                UnsafeSimple:    96ms :    10951
             Simple Step 2:    66ms :    10951
               Words:    39ms :    10951
      Words parallel:    78ms :    10951


                Measure("Simple Step 2", () =>
                {
                    int[] result = new int[256];
                    for (int i = 0; i < data.Length; i++,i++)
                    {
                        result[data[i]]++;
                    }
                    return result.Max() + result[0];
                });
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.