что эффективнее: читать в файле из сценария Java или оболочки? - PullRequest
2 голосов
/ 04 марта 2010

Я пытаюсь выяснить, что является более эффективным с точки зрения нагрузки на сервер, которая на данный момент довольно велика, дополнительная перегрузка не будет хорошей идеей. Вот что мне нужно сделать:

У меня есть файл журнала, который меняется, иногда каждую секунду, каждые несколько минут или около того, что на самом деле не имеет отношения к этому вопросу. Я пытаюсь выяснить, эффективнее ли запускать java-файл с заданием cron или написать сценарий оболочки, который также будет выполняться cron, все это в Linux. Какая идея лучше?

Ответы [ 5 ]

4 голосов
/ 04 марта 2010

Проверка файлов журнала в большинстве случаев является вводом-выводом, поэтому фактическое время ЦП в обоих случаях незначительно. Поэтому важно время запуска, а запуск сценария оболочки в Linux на порядок быстрее, чем запуск JVM.

1 голос
/ 04 марта 2010

Как сказал Питер, это зависит от того, что должна делать программа.

Как правило, запуск Java-программы сопряжен с некоторыми издержками по сравнению со сценарием оболочки. Однако, если необходимо выполнить некоторые сложные операции, лучше всего подойдет java.

Я бы лично выбрал Python для сценариев, для которых оболочка не очень подходит и для которых Java может быть излишней:)

Также следует помнить, что системные администраторы могут довольно хорошо читать и понимать скрипты оболочки, но Java - это другое дело. Это может быть проблемой, а может и нет.

0 голосов
/ 04 марта 2010

Если вам нужно порождать n ^ 2 процессов для n строк файлов журнала, вам нужно оптимизировать даже за пределами bash. Если вы хотите порождать только процесс sinlge, язык не будет иметь значения, imho.

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

0 голосов
/ 04 марта 2010

В * nix есть много инструментов, которые эффективно анализируют файлы. например, grep, tail. Эти инструменты написаны на C с очень эффективными алгоритмами для анализа файлов. Определенно пойти на эти инструменты оболочки. Нет Java, пожалуйста. Во-первых, запуск происходит медленно. Вы не можете сравнить это с запуском C-программы, такой как grep. Во-вторых, вам будет сложно (с точки зрения компиляции) устранить неполадки в сценарии, если что-то пойдет не так.

0 голосов
/ 04 марта 2010

В общем, Perl считается лучшим для разбора текста, но, поскольку все, что вам нужно сделать, это распечатать изменения в консоли, вы должны просто выполнить tail -f, а не задания cron и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...