Команда Unix к строке поиска установила пересечения или выбросы?

В проекте Windows Mobile 5 против использования SqlCe я перешел от использования объектов с ручным кодированием к объектам, сгенерированным кодом (CodeSmith), используя шаблон ORM. В процессе все мои данные доступа использовали CSLA в качестве базового уровня.

Прямое преобразование улучшило мою производительность на 32% при локальном тестировании, почти все из-за улучшенных методов доступа.

После этого изменения мы скорректировали шаблоны (после того, как Стив Ласкер увидел на PDC некоторые материалы о производительности SqlCe), и менее чем за 20 минут весь наш уровень данных был значительно улучшен, наши средние «медленные» вызовы изменились с 460 мс до ~ 20мс. Самое замечательное в ORM - то, что нам нужно было реализовать (и модульное тестирование) эти изменения только один раз, и весь код доступа к данным изменился. Это была удивительная экономия времени, мы, возможно, сэкономили 40 часов или больше.

Сказанное выше, мы потеряли некоторое время, убрав кучу диалогов «ожидание» и «прогресс», которые больше не нужны.

Я использовал несколько инструментов ORM, и я могу рекомендовать два из них:

Оба они работали довольно хорошо, и любая потеря производительности не была заметна.

20
задан Evgeny 19 June 2009 в 05:28
поделиться

4 ответа

Похоже, что grep -L решает настоящую проблему плаката, но для фактического заданного вопроса, нахождения пересечения двух наборов строк, вы можете захотеть изучить команду «comm». Например, если файл1 и файл2 каждый содержит отсортированный список слов, по одному слову в строке, то

$ comm -12 file1 file2

создаст слова, общие для обоих файлов. В более общем смысле, учитывая отсортированные входные файлы файл1 и файл2 , команда

$ comm file1 file2

создает три столбца выходных

  1. строк только в строках file1
  2. только в строках file2
  3. как в file1, так и в file2

. Вы можете подавить столбец N в вывод с опцией -N . Таким образом, приведенная выше команда comm -12 file1 file2 подавляет столбцы 1 и 2, оставляя только слова, общие для обоих файлов.

37
ответ дан 29 November 2019 в 22:54
поделиться

Пересечение:

# sort file1 file2 | uniq -d
dad

Уникальное слева:

# sort file1 file2 | uniq -u
bob
mom
9
ответ дан 29 November 2019 в 22:54
поделиться

Возможно, я неправильно понимаю вопрос, но почему бы просто не использовать grep для поиска строки (используйте параметр -L, чтобы он печатал имена файлов, у которых нет строки в них).

Другими словами

grep -L "{% load i18n %}" file1 file2 file3 ... etc

или с подстановочными знаками для имен файлов в зависимости от ситуации.

5
ответ дан 29 November 2019 в 22:54
поделиться

от man grep

-L, --files-without-match

Подавить нормальный вывод; вместо печати имя каждого входного файла, из которого обычно не было бы вывода напечатан. Сканирование остановится на первое совпадение.

Итак, если ваши шаблоны представляют собой файлы .html, вам нужно:

grep -L '{% load i18n %}' *.html
2
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

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