Как я могу ускорить программу C в терминале (использовать все скорости процессора) - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Ubuntu 18.10 и запускаю собственную программу с использованием терминала, который требует много вычислений, но когда я открываю диспетчер задач, загрузка ЦП терминала (включая запущенную программу) никогда не занимает более 26%.Вот очень простая программа, которая ведет себя так же.Я хотел бы знать, как я могу заставить мою программу (или терминал) использовать все мои скорости процессора.Я также попытался запустить несколько терминалов и запустить программу или использовать потоки в моем коде, но, похоже, эти 26% распадаются на эти терминалы и работают медленно.Это лимит терминала?Как я могу это исправить и заставить программу работать быстрее?Спасибо

#include <stdio.h>

int main(){
    int a=0;
    while(1){
        printf("%d\n",a);
    }
    return 0;
}

РЕДАКТИРОВАТЬ: используйте только «a» вместо «a ++», чтобы избежать переполнения

1 Ответ

0 голосов
/ 01 февраля 2019

Хорошо, мне удалось, чтобы в моей задаче использовалось 100% одного из 4 процессорных ядер (поэтому я получил ~ 25% процессорного времени, он был разделен на 4 ядра).Используя функцию "pthread_create", я могу использовать несколько потоков и использовать всю мощность процессора для этой задачи.Я узнал, что ввод / вывод ограничивает скорость выполнения задачи, и я не должен использовать всю мощность процессора.Спасибо всем за помощь и знания, которые действительно помогли мне!Некоторые источники, которые также помогли мне решить проблему, для будущих читателей:

функция pthread_create http://man7.org/linux/man-pages/man3/pthread_create.3.html

команда для использования процессора https://www.booleanworld.com/guide-linux-top-command/

компиляция неопределенная ссылкасоздать pthread_create в Linux

...