В то время как то, что время порождения и установки новый процесс и загрузки, выполнения и инициализации, чистки и завершения программы и ее зависимостей библиотеки в ней омрачает безусловно на самом деле время, должно было работать, действие было уже покрыто, вот некоторые синхронизации с различным printf
реализации для одного дорогого действия, которое не омрачено остальными:
$ time /usr/bin/printf %2000000000s > /dev/null
/usr/bin/printf %2000000000s > /dev/null 13.72s user 1.42s system 99% cpu 15.238 total
$ time busybox printf %2000000000s > /dev/null
busybox printf %2000000000s > /dev/null 1.50s user 0.49s system 95% cpu 2.078 total
$ time bash -c 'printf %2000000000s' > /dev/null
bash -c 'printf %2000000000s' > /dev/null 4.59s user 3.35s system 84% cpu 9.375 total
$ time zsh -c 'printf %2000000000s' > /dev/null
zsh -c 'printf %2000000000s' > /dev/null 1.48s user 0.24s system 81% cpu 2.115 total
$ time ksh -c 'printf %2000000000s' > /dev/null
ksh -c 'printf %2000000000s' > /dev/null 0.48s user 0.00s system 88% cpu 0.543 total
$ time mksh -c 'printf %2000000000s' > /dev/null
mksh -c 'printf %2000000000s' > /dev/null 13.59s user 1.57s system 99% cpu 15.262 total
$ time ash -c 'printf %2000000000s' > /dev/null
ash -c 'printf %2000000000s' > /dev/null 13.74s user 1.42s system 99% cpu 15.214 total
$ time yash -c 'printf %2000000000s' > /dev/null
yash -c 'printf %2000000000s' > /dev/null 13.73s user 1.40s system 99% cpu 15.186 total
Вы видите что, по крайней мере, в том отношении, GNU printf
не был оптимизирован для производительности. Нет большого количества точки, оптимизируя команду как printf
так или иначе, потому что для 99,999% использований, потраченное выполнение времени действия будет омраченным временем выполнения так или иначе. Это имеет намного больше смысла оптимизировать команды как grep
или sed
это может потенциально обработать гигабайты данных в одном выполнении.
Убедитесь, что ваша системная прошивка полностью актуальна. Это звучит как проблема ACPI, которая не так хорошо проверена на Linux, как в Windows.
Как gcc
, так и clang
относятся к некоторым переменным среды, которые могут помочь достичь желаемого. Попробуйте добавить их в ~/.bashrc
:
export CFLAGS="-I /usr/local/cuda/include"
export LDFLAGS="-L /usr/local/cuda/lib"
Однако это обычно не делается на глобальном уровне - различные проекты нуждаются в различных include и libs, чтобы настроить пользовательские каталоги include и lib для каждого проекта в Makefile
или с помощью ./configure
.
for f do exec <"$f"
: handle stdin
done
Неинтерактивная оболочка будет обрабатывать любое перенаправление из файла, который не может быть прочитан или который не существует при связывании со специальной компоновкой, как фатальную ошибку, и немедленно завершит работу с содержательным диагностическим сообщением, записанным в stderr. Таким образом, ваши параметры являются действительными, читаемыми файлами, и приведенная выше инструкция не сделает ничего полезного, пока вы не замените :...
часть с/что-то полезное, или пользователь предоставил недопустимый параметр, и сценарий завершает работу.
Когда вы это делаете...
for var in ...; do : compound command list on "$var"; done
Бит в...;
является необязательным оператором в синтаксисе, который позволяет заменить набор параметров для набора по умолчанию, который является вашим списком аргументов.
Так что...
for var do : compound command list on "$var"; done
... это, вероятно, то, что вы ищете, здесь.
for f do exec <"$f"
: now do some stuff w/ stdin
done
... где оболочка будет итеративно присваивать stdin и проверять в качестве читаемых файлов любые аргументы, предоставленные сценарием для всех команд, следующих за инструкцией exec
, пока не будут исчерпаны все параметры и не будет выполнен цикл для
. Если он не может сделать это, он будет отформатировать и напечатать сообщение об ошибке для вас в стандартной форме, к которой пользователь уже привык.
Проблема, которую вы получаете, может быть аппаратной проблемой той же, с которой вы столкнулись сейчас у одного из моих друзей. Когда-то его вентилятор не работает, и иногда это работает нормально Это произошло из-за пыли или может быть проблема с вентилятором.
то, что я сделал, чтобы решить проблему.
Сначала я очистил его с помощью пистолета-воздуходувки, затем, когда он не был запущен, затем я слегка толкнул вентилятор ЦП иглой (будьте осторожны во время подталкивания удалить иглу быстро), затем вентилятор внезапно начал и работал нормально в течение нескольких месяцев.
После этого он столкнулся с той же проблемой, решенной заменой вентилятора.
Я думаю, что это не будет проблемой ОС. Если это происходит каждый раз, когда вы приостанавливаете работу вентилятора CPU, он не должен запускаться.