ЙажаСценарий / Говнокод #11980 Ссылка на оригинал

0

  1. 1
eval( array.join('+') );

Конечно, я понимаю что всякие Haskel там, то, сё...

Запостил: bot bot, (Updated )

Комментарии (26) RSS

    • Тест смешной, но сравнивает вообще разные вещи:
      for-in - это конкатенация строк, т.как ключи ВМ всегда приводит к строкам. Их хотя бы нужно было обратно кастовать к числам.
      eval - будет ухудшаться с увеличением длины массива, при чем скачкообразно, с шагом *128 (по крайней мере в Мозиловской ВМ) Это, конечно, если стека вообще хватит.
      Ответить
      • Ну вы как бы все равно тестируете плохо... Нужно, для честности, тестировать на массивах в несколько тысяч длиной. Массив из 7 элементов практически наверняка будет быстрее без циклов сложить...
        Ответить
      • Посмотрите-ка заодно, как reduce обкакается при поиске в парочке петабайтах данных, распределённых по сотне-другой машин.
        Ответить
      • Да, и еще, reverse for тупо пропускает первый елемент массива - это вообще надувательство, если честно.
        Ответить
  • function arrayMergeSum(array) {
        "use strict";
        var half, i, other, len = array.length;
        while (len > 1) {
            half = len >> 1;
            other = len - 1;
            for (i = 0; i < half; i++) {
                array[i] += array[other - i];
            }
            len -= half;
        }
        return array[0];
    }

    Любителям нетривиальных подходов посвящается. Вряд ли оно будет быстрее, но врага с толку собъет - почти наверняка.
    Ответить
      • function arrayEightSum(array) {
            "use strict";
            var len = 8 - (array.length - ((array.length >> 3) << 3)),
                i = len, result = array.length;
            array.length += len;
            while (i > 0) {
                array[result + --i] = 0;
            }
            for (result = i = 0, len = array.length; i < len;
                 result +=
                 array[i]     + array[i | 1] +
                 array[i | 2] + array[i | 3] +
                 array[i | 4] + array[i | 5] +
                 array[i | 6] + array[i | 7],
                 i += 8) { }
            return result;
        }

        Кстати, еще вариант, теперь, думаю, подчитал Упанишад, и Шива должен быть доволен.
        Ответить
          • Неа, хотя где-то кто-то предлагал goto, и можно было бы попробовать с его помощью что-то придумать, но в чистом виде - никак.
            Кстати, в отличие от ожидаемого результата, он не просто плохой, он удивительно хреновый. Я даже и предположить не мог, что все на столько плохо.
            http://jsperf.com/array-summing/9
            Ответить
            • >хотя где-то кто-то предлагал goto
              ЛолШТО? Goto в js? Там только брейки.

              >он не просто плохой, он удивительно хреновый.
              Правильно. Извраты и говнохаки должны, нет просто обязанны дико тормозить.
              Ответить
              • В AS3 уже есть, в PHP - тоже, если жабоскриптеров жаба не задушит (???) то почти наверняка появится. Это ж наше все, как жеж без него.
                В данном случае изврат же не для того, чтобы чего-то конкретного добиться, а чтобы посмотреть, что именно оно делает. Очевидно что JIT тупо заточен под какие-то тривиальные случаи, и умеет их оптимизировать, но в целом плохо понимает жабоскриптовксий код / плохо справляется с более общими операциями. А они понадобятся, когда в Жабоскрипте захотят, например, с картинками работать, фильтры там всякие, хистограмы и т.п. Ну и звуки да и вообще все, что требует менее тривиальных рассчетов.
                Ответить
                • Это они из явы взяли. Там тоже зарезервировали - чтоб и не пытались.
                  Ответить
              • Сначала goto, а потом захочется, чтобы свитч и цикл могли сливаться в экстазе аля duff device, а потом захочется адресной арифметики... Нет, определенно в js это не нужно.
                Ответить
      • Ивасилий в итоге свалил с концами? Или сидит всё же под иной файкою?
        Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8