Читаем QNX/UNIX: Анатомия параллелизма полностью

 pthread_t *tids = new pthread_t [numpar];

 _clockperiod clcold;

 ClockPeriod(CLOCK_REALTIME, NULL, &clcold, 0);

 if (argc > 2 && atoi(argv[2]) > 0) {

  _clockperiod clcnew = { atoi(argv[2]) * 1000, 0 };

  ClockPeriod(CLOCK_REALTIME, &clcnew, &clcold, 0);

 }

 timespec interval;

 sched_rr_get_interval(0, &interval);

 cout << "Rescheduling interval = "

  << (double)interval.tv_nsec / 1000000 << " msec. " << endl;

 uint64_t t = ClockCycles();

 for (int i = 0; i < numpar; i++)

  pthread_create(&tids[i], NULL, threadfunc, NULL);

 for (int i = 0; i < numpar; i++)

  pthread_join(tids[i], NULL);

 t = ClockCycles() - t;

 cout << "Threads scheduling time " << cycle2milisec(t)

  << " msec. [" << t << " cycles]" << endl;

 ClockPeriod(CLOCK_REALTIME, &clcold, NULL, 0);

 exit(EXIT_SUCCESS);

}

Наконец, для сравнительного анализа выполним тот же объем вычислительной работы в одиночном потоке, то есть в последовательной «классической» программе ( файл p4-3.cc):

i nt main(int argc, char *argv[]) {

 int numpar = 1;

 if (argc > 1 && atoi(argv[1]) > 0)

  numpar = atoi(argv[1]);

 _clockperiod clcold;

 ClockPeriod(CLOCK_REALTIME, NULL, &clcold, 0);

 if (argc > 2 && atoi(argv[2]) > 0) {

  _clockperiod clcnew = { atoi(argv[2]) * 1000, 0 };

  ClockPeriod(CLOCK_REALTIME, &clcnew, &clcold, 0);

 }

 timespec interval;

 sched_rr_get_interval(0, &interval);

 cout << "Rescheduling interval = "

  << (double)interval.tv_nsec / 1000000. << " msec." << endl;

 uint64_t t = ClockCycles();

 workproc(1000 * numpar);

 t = ClockCycles() - t;

 cout << "Single scheduling time. " << cycle2milisec(t)

  << " msec. [" << t << " cycles]" << endl;

 ClockPeriod(CLOCK_REALTIME, &clcold, NULL, 0);

 exit(EXIT_SUCCESS);

}

Выполняем 3 полученных теста для различных значений периода системного тика (показано группами по 3 запуска) в таком порядке: одиночный процесс, параллельные потоки, параллельные процессы:

# nice -n-19 p4-3 10

Rescheduling interval = 3.99939 msec

Single scheduling time: 5928.8 msec [3169850746 cycles]

# nice -n-19 p4-2 10

Rescheduling interval = 3.99939 msec.

Threads scheduling time: 5919.82 msec. [3165049513 cycles]

# nice -n-19 p4-1 10

Rescheduling interval = 3.99939 msec.

Forks scheduling time: 5962.21 msec. [3187713371 cycles]

# nice -n-19 p4-3 10 50

Rescheduling interval = 0.197788 msec

Single scheduling time: 6427.33 msec. [3436394566 cycles]

# nice -n-19 p4-2 10 50

Rescheduling interval = 0.197788 msec.

Threads scheduling time: 6207.96 msec. [3319104030 cycles]

# nice -n-19 p4-1 10 50

Rescheduling interval = 0.197788 msec

Forks scheduling time 6029.23 msec. [3223548073 cycles]

# nice -n-19 p4-3 10 20

Rescheduling interval = 0.077104 msec.

Single scheduling time: 6745.37 msec. [3606433666 cycles]

# nice -n-19 p4-2 10 20

Rescheduling interval = 0.077104 msec

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных