Является ли использование функции system() внутри кода C++ более быстрым способом, чем использование исходных кодов? [закрыто]

-2
16.12.2018, 00:14
1 ответ

Мой краткий ответ — да.

Пожалуйста, подтвердите, правильно ли я понял ваш вопрос.

Обратите внимание, что происходит, когда вы вызываете систему:

  1. Ваша программа начнет выполнение оболочки;
  2. Эта оболочка будет читать командную строку, которую вы ей передали;
  3. Оболочка запустит программу, которую вы передали системе ()--, в вашем случае это espeak;
  4. Программа получит параметры, которые вы ей передали;
  5. Наконец, программа будет выполнена.

Таким образом, элементы с 1 по 3 (и, возможно, 4 )являются дополнительными при использовании system()по сравнению с запуском той же функциональности в исходном коде.

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

Я ничего не знаю об espeak, поэтому постараюсь ответить в общих чертах.

  • Во-первых, не всегда легко иметь ту же функциональность работающей программы в исходном коде. Некоторые программы имеют функциональность, распределенную по множеству опций, и может быть трудно понять это и создать функцию в вашем коде, чтобы делать то, что вы можете легко выразить через командную строку;
  • Во-вторых, вам нужно будет оценить экономическую выгоду от трансформации. С современными высокопроизводительными процессорами и избытком памяти запуск оболочки, а затем и вашей программы, возможно, не займет слишком много времени. Эти накладные расходы особенно незначительны, если вы начнете espeakвсего несколько раз с относительно длинным текстом.
2
28.01.2020, 05:16

Теги

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