Требуется: неассоциативный массив в AWK

Я ищу ускорение некоторого кода в AWK путем последовательной обработки внутреннее строковое представление вместо последовательной обработки представление массива. (Для примеров 1 и 2 ниже предполагается, что datasep - это единственный символ, который не является частью вычислимых данных.) Поэтому вместо:

# Example 1
split(datastr,data,datasep)
for(i=1; i in data; i++) { 
     # Use data[i]
     }

я хочу попробовать что-то вроде

 # Example 2 - buggy code assumes datastr terminated by datasep
 l= length(datastr)
 for(j=1; j < l ; ) {
      datumlen = match(substr(datastr,j+1),datasep)
      #Use substr(datastr,j+1,datumlen-1)
      j+=datumlen
      }

Это потому, что я хочу сэкономить память и время поиска что участвует в использовании ассоциативного массива (данных), а также потому, что Я верю в то, как реализованы match и substr. я планируем начать с datastr длиной> 10 ^ 6 байт (с datumlen <5 большую часть времени), и подтолкнуть его оттуда. Я могу передать результаты, так что Меня не беспокоят требования к памяти кода, но Мне может потребоваться сделать более одного прохода через datastr, поэтому я бы нравится избегать потоковой передачи данных (если это не еще быстрее).

Итак, вопрос: существуют ли эффективные с точки зрения памяти и доступа? процедуры, которые улучшают пример 1 и что-то выглядят как Пример 2? Или мне лучше довериться внутренняя буферизация AWK и система, используемые для обработки входных файлов, и просто сделать несколько проходов по одному и тому же входному файлу?

РЕДАКТИРОВАТЬ 2015.09.18: (Я еще не зарегистрирован на этом форуме, поэтому отвечаю комментарий здесь.) Я использую gawk 4.1.3 на платформе, отличной от Unix. я заинтересованы в небольшой портативной среде, в которой можно делать определенные типы вычислений.Я недостаточно знаю о внутреннем устройстве gawk, и подумал, возможно, кто-то, читающий этот форум, пробовал что-то подобное до. Я закончу профилирование разными способами, если не получу другие предложения. КОНЕЦ РЕДАКТИРОВАНИЯ 2015.09.18

Герхард «Спросите меня о настройке системы» Paseman, 2015.09.16

0
19.09.2015, 00:05
0 ответов

Теги

Похожие вопросы