1

У меня есть файл, содержащий много строк, например, 1 миллион строк, и cat the_file занимает слишком много времени для прокрутки.

$ time cat 1m
......
cat 1m  0.00s user 11.21s system 28% cpu 38.839 total

Как сделать это быстрее? Как в xterm или в опции jumpScroll от urxvt?

Я использую PuTTY 0.62 и Windows 8 CP, если Windows 7 необходима, я могу изменить.


Вот код, который я использовал для создания файла:

#include <stdio.h>

int
main(void) {
        int i;
        for (i = 2; i < 999999; i++) {
                printf("%d\n", i);
        }
        return 0;
}

2 ответа2

1

Ты не можешь Вот почему мы не должны входить в stdout из наших внутренних циклов.

Значимое ведение журнала может быть реализовано с помощью модульных операций, но я получил из ваших комментариев, что вы спрашиваете, можете ли вы ускорить замазку.

Печать на стандартный вывод - это, по сути, просмотр файла. Запись в файл «вслепую» будет намного быстрее, но на этот раз вы испытываете постоянную задержку.

0

1. Используйте программу, которая поддерживает Jumpscroll

Например, SecureCRT программного обеспечения Vandyke имеет несколько похожих функций звучания.

2. Выберите лучшее решение для целей

Никогда не имеет смысла, чтобы человек прочитал 1000000 строк текста менее чем за 38 секунд. Вы, вероятно, хотите:

  • Видимый индикатор текущего прогресса (указывает на то, что программа все еще работает)
  • Доступ к последним примерно 20 строкам текста, если программа приостановлена или остановлена.

Обычно достаточно просто перенаправить вывод в файл. Вы можете контролировать размер файла, чтобы увидеть, растет ли он или статический.

При необходимости я написал бы небольшой скрипт, который считывает строки из STDIN, записывает точки в STDOUT (например, одну точку на n строк или одну точку, если в STDIN был введен в последнюю 1/n-ю секунды) и сохраняет последние 20 строк для отображения при определенных обстоятельствах (EOF, получение сигнала и т. д.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .