Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1085
от 03.08.2008, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 458, Экспертов: 37
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 140820: Уважаемые, эксперты. Не могу решить проблему Загружаю картинку в picturebox в среде VC++ 2008 Express Edition, компиллятор говорит, что не может найти файл. Точно такой же адрес файла в Бэйсике нормально работает Подскажите , пожалуй...
Вопрос № 140945: Уважаемые Эксперты, у мезя задача в увеличении скорости работы моих программ, перешел с VS 6 (2000) на VS 2005 и посему первый вопрос: Cofiguration properties-C/C++-opttimization-maximzeSppeed(/O2) не знаю где установить O2 и посему получаю гл...

Вопрос № 140.820
Уважаемые, эксперты.
Не могу решить проблему
Загружаю картинку в picturebox в среде VC++ 2008 Express Edition, компиллятор говорит, что не может найти файл.
Точно такой же адрес файла в Бэйсике нормально работает
Подскажите , пожалуйста, что делать ?

Приложение:

Отправлен: 27.07.2008, 15:20
Вопрос задал: Verof (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Whois
Здравствуйте, Verof!
Я проверил Ваш код, но в пути не обнаружил ни одного слэша.
В Visual C++, насколько мне известно, используется двойной слэш. Я добавил приложение код, который у меня работает.

Не забываем про "проблему слэшей" и на портале, которая аналогична той, что в С++. :)
--------
∙ Отредактировал: sir Henry, Академик
∙ Дата редактирования: (время московское)

Приложение:

Ответ отправил: Whois (статус: 1-ый класс)
Ответ отправлен: 27.07.2008, 15:32
Оценка за ответ: 5
Комментарий оценки:
Спасибо за грамотный ответ!


Вопрос № 140.945
Уважаемые Эксперты, у мезя задача в увеличении скорости работы моих программ, перешел с VS 6 (2000) на VS 2005 и посему первый вопрос:

Cofiguration properties-C/C++-opttimization-maximzeSppeed(/O2) не знаю где установить O2 и посему получаю глобальную ошибку
1>cl : Command line error D8016 : '/O1' and '/RTC1' command-line options are incompatible
1>Build log was saved at "file://c:Documents and SettingsAleksanderМои документыVisual Studio 2005ProjectssungensungenDebugBuildLog.htm"
1>sungen - 1 error(s), 0 warning(s)
и стоит ли с этим связываться?

Теперь главный вопрос о работы программы на двух процессорах ( у меня core 2 duo)
Структура программы такова – массивы общих данных определены перед main программой, а наибольшая глубина вычислений в вызываемой из неё подпрограммой которая используя глобальные данные рассчитывает и возвращает значение по 250 примерам.
#include "stdafx.h"

i nline int ff();

глобальные данные
static unsigned short indat [271] [10]; // ??????? ??????
static unsigned short sout [5] [200];

int _tmain(int argc, _TCHAR* argv[])
{

f=ff(); расчет 250 примеров
}
int ff()
{
for (i=0; i<250; i++) {

}
return n;
}

Теперь что я хочу, но запутался в статьях (стар и слаб на аглицкий):
#include "stdafx.h"

inline int ff1();
inline int ff2();

глобальные данные
static unsigned short indat [271] [10]; // ??????? ??????
static unsigned short sout [5] [200];

int _tmain(int argc, _TCHAR* argv[])
{

f1=ff1(); расчет 0-124 пример в основном потоке
f2=ff2(); расчет 125-249 пример на втором процессоре f=f1+f2;
}

int ff1()
{
for (i=0; i<125; i++) {

}
return n;
}

int ff2()
{
for (i=125; i<250; i++) {

}
return n;
}
Что надо добавить в то что я хочу? (#include ……………..)
Спасибо, извините за возможно путанный вопрос?
С уважением Александр
Отправлен: 29.07.2008, 05:22
Вопрос задал: Третьяченко Александр Сергееич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Aristos
Здравствуйте, Третьяченко Александр Сергееич!
Сначало по первому вопросу.
Настройки оптимизации находятся тут:
[Project Properties]/[Configuration Properties]/[C/C++]/[Optimization]/[Optimization] опции:
- Disabled (/Od)
- Minimize Size (/O1)
- Maximize Speed (/O2)
- Full Optimization (/Ox)
[Project Properties]/[Configuration Properties]/[C/C++]/[Code Generation]/[Basic Runtime Check] опции:
- Default
- Stack Frames (/RTCs)
- Uninitialized Variables (/RTCu)
- Both (/RTC1, equiv. to /RTCsu)
Несовместимость опций может быть вызвана противоречием в желании уменьшить размер и одновременно добавить код проверок времени исполнения (typeof, type_id и т.д.). Установка оптимизации размера программы, как мне кажется, морально устарела (объем НЖМД подрос, да и оперативной памяти обычно бывает вполне достаточно). Лучше ставить максимизацию скорости или полную оптимизацию.

По втрому вопросу. Как я понял, вы хотите ускорить время выполнения про граммы, задействовав оба процессора. Тут возможно 2 пути.
Первый заключается в использовании специализированного компилятора (от Intel), который сам выполняет распараллеливание кода, и оптимизирует его на исполнение на многопроцессорных (и многоядерных) системах.
Второй способ в меньшей степени зависит от компилятора и заключается в использовании нескольких потоков. Об этом способе расскажу подробней.
Каждая программа (процесс в системе) выполняется в 1 или нескольких потоках (thread). Потоки разделяют общую память процесса, но выполняются независимо друг от друга. Каждый поток может одновременно выполняться только на одном процессоре. Поэтому чтобы задействовать несколько процессоров, необходимо использовать несколько потоков. Подробнее про многопоточность можно прочитать по ссылке в приложении.
Для создания потока используется функция _beginthreadex (если и другие функции, но лучше использовать эту):
uintptr_t _beginthreadex(
void *security,
unsi gned stack_size,
unsigned ( *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr);
Типичное использование:
#include <process.h>
...
unsigned RunFunc(void* arg); // функция потока
...
unsigned idThread; // id потока
int arg = 5;
HANDLE hThread = (HANDLE)_beginthreadex(0, 0, RunFunc, &arg, 0, &idThread);
...
Функция создает поток и запускает в нем на исполнение указаную функцию (RunFunc), которй передает заданный аргумент (arg), который может быть, например, указателем.
Узнать о состоянии потока (исполняется или уже завершился) можно с помощью функции WaitForSingleObject:
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds);
Эта функция вернет будет ждать (dwMilliseconds миллисекунд) завершения потока и вернет константу WAIT_TIMEOUT, если истек таймаут ожидания, или досрочно вернет WAIT_OBJECT_0, если поток завершился.
Досрочно завершить поток можно с помощ ью функции TerminateThread:
BOOL TerminateThread(
HANDLE hThread,
DWORD dwExitCode);
В вашем, примере, можно часть вычислений выполнять в главном (первом) потоке, а для другой части создать дополнительный поток. Примерный код в приложении:
Так же почитайте хэлп по приведенным функциям.

Приложение:

---------
нет ничего невозможного

Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 29.07.2008, 09:40
Оценка за ответ: 5


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.0 alpha от 21.07.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное