В проекте Windows Mobile 5 против использования SqlCe я перешел от использования объектов с ручным кодированием к объектам, сгенерированным кодом (CodeSmith), используя шаблон ORM. В процессе все мои данные доступа использовали CSLA в качестве базового уровня.
Прямое преобразование улучшило мою производительность на 32% при локальном тестировании, почти все из-за улучшенных методов доступа.
После этого изменения мы скорректировали шаблоны (после того, как Стив Ласкер увидел на PDC некоторые материалы о производительности SqlCe), и менее чем за 20 минут весь наш уровень данных был значительно улучшен, наши средние «медленные» вызовы изменились с 460 мс до ~ 20мс. Самое замечательное в ORM - то, что нам нужно было реализовать (и модульное тестирование) эти изменения только один раз, и весь код доступа к данным изменился. Это была удивительная экономия времени, мы, возможно, сэкономили 40 часов или больше.
Сказанное выше, мы потеряли некоторое время, убрав кучу диалогов «ожидание» и «прогресс», которые больше не нужны.
Я использовал несколько инструментов ORM, и я могу рекомендовать два из них:
Оба они работали довольно хорошо, и любая потеря производительности не была заметна.
Похоже, что grep -L
решает настоящую проблему плаката, но для фактического заданного вопроса, нахождения пересечения двух наборов строк, вы можете захотеть изучить команду «comm». Например, если файл1
и файл2
каждый содержит отсортированный список слов, по одному слову в строке, то
$ comm -12 file1 file2
создаст слова, общие для обоих файлов. В более общем смысле, учитывая отсортированные входные файлы файл1
и файл2
, команда
$ comm file1 file2
создает три столбца выходных
. Вы можете подавить столбец N
в вывод с опцией -N
. Таким образом, приведенная выше команда comm -12 file1 file2
подавляет столбцы 1 и 2, оставляя только слова, общие для обоих файлов.
Пересечение:
# sort file1 file2 | uniq -d
dad
Уникальное слева:
# sort file1 file2 | uniq -u
bob
mom
Возможно, я неправильно понимаю вопрос, но почему бы просто не использовать grep для поиска строки (используйте параметр -L, чтобы он печатал имена файлов, у которых нет строки в них).
Другими словами
grep -L "{% load i18n %}" file1 file2 file3 ... etc
или с подстановочными знаками для имен файлов в зависимости от ситуации.
от man grep
-L, --files-without-match
Подавить нормальный вывод; вместо печати имя каждого входного файла, из которого обычно не было бы вывода напечатан. Сканирование остановится на первое совпадение.
Итак, если ваши шаблоны представляют собой файлы .html, вам нужно:
grep -L '{% load i18n %}' *.html