Изменение цвета выхода GIT ветви?

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

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

  1. Одно перенаправление вне цикла

     для i в $ (seq $ ((3000000/2000))); do seq 2000; done> file 
     
  2. Добавление к тому же файлу внутри цикла

     для i в $ (seq $ ((3000000/2000))); сделать seq 2000 >> file; done 
     
  3. Разделение вывода на несколько файлов

     для i в $ (seq $ ((3000000/2000))); do seq 2000> file $ i; done 
     

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

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

Количество операций ввода-вывода

Производительность зависит не только от размера файла, но также от количества операций ввода-вывода. При добавлении ( >> ) выполняется еще больше вызовов ввода-вывода для поиска до конца файла.

Этот первый сценарий выполняет операции ввода-вывода ( >> ) вне цикла for :

$ cat outloop.sh
#!/bin/sh
>file
for i in $(seq 1 ${1:?})
do
    echo $i
done >> file

Этот сценарий, с другой стороны, выполняет операции ввода-вывода ( >> ) на каждой итерации, внутри цикла for :

$ cat inloop.sh
#!/bin/sh
>file
for i in $(seq 1 ${1:?})
do
    echo $i >> file
done

Выполните и сравните, посмотрите, как расположение Оператор >> влияет на производительность:

$ x=500000; time sh outloop.sh $x; time sh inloop.sh $x; 

real    0m1.227s
user    0m0.389s
sys     0m0.859s

real    0m2.996s
user    0m0.809s
sys     0m2.197s

Размещение оператора перенаправления вне цикла удваивает производительность при записи 500000 строк (в моей системе).

1
21.09.2018, 12:38
2 ответа

Мне удалось заставить ветку git распечататься красным, изменив

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[93m\]\w\[\033[m\]\$(parse_git_branch)\[\033[00m\] \n$ "
с

по

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[93m\]\w\[\033[31m\]\$(parse_git_branch)\[\033[00m\] \n$ "

Чтобы выделить конкретное изменение, использовалось [31m\]\$(parse_git_branch)вместо [m\]\$(parse_git_branch)

.
1
27.01.2020, 23:31

Для этого можно использовать цветовые коды.

PS1='\e[31TextInRed\e[0m'

Где \e[31отображает все на терминале в красном цвете, 31 — это цветовой код для красного цвета, а \e[0mсбрасывает цвет обратно в нормальный, чтобы ваш терминал не перепутался (, т.е. весь текст будет окрашен в красный цвет ).

Подробнее о цветовых кодах читайте здесь

1
27.01.2020, 23:31

Теги

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