MT4 терминал на 64-хразрядной ОС

 
Хочу задать вопросы разработчикам:
1. Тестировался ли MT4 терминал на 64-хразрядных версиях Windows: WinXP 64 bit, Windows 2003 Server, Windows Vista x64? Если приобрести как upgrade Windows Vista x64, не будет ли потери работы терминала и тестера/оптимизатора?
2. Проводилось ли сравнение производительности на 64-хразрядных процессорах, например, Intel Core 2 Duo или Athlon 64, в плане x32/x64 версий ОС, т.е., проще говоря, на чём быстрее работает терминал: WinXP 32 bit или WinXP 64 bit при x64 процессоре?

Заранее спасибо за развёрнутый ответ.
 
У меня работает на Win 2003 Server x64 bit.

Проблем не замечено.

А вообще так как ВСЕ системы поддерживают старые 32-х битные проги (даже без эмуляции вроде бы), так что не волнуйтесь.
 
Реальность немного другая, на WinXP x64 не идут многие программы. Игрушки меня не волнуют, мне они на ... не нужны, но на Vista, например, знакомые говорили, не идёт клиент 1С 8.0. Есть масса и других примеров.
Поэтому хочется услышать твёрдое мнение разработчиков по поводу вышеуказанных в начале топика двух вопросов.
 

Ксати, можно запустить процес поиска оптимальных параметров (оптимизацию) в количестве потоков соответствующих количеству ядер. Вот у меня например двуядерный проц и пожно увеличить скорость оптимизации в два раза если распаралелить вычисления запусив в дух потоках одновремено.

 

У меня обычный Athlon 64 3200+, не могу сейчас проверить дома двухядерность. А что, MT4 терминал спрограммирован так, что умеет работать на нескольких процессорах одновременно? Не каждая программа так может, например, архиватор WinRAR только с версии 3.60 умеет занимать несколько процессоров.

 

Ну не думаю что в МТ делают задачу оптимизации более одного потока, хотя это возможно. Друг именно так и сделал в своей программе оптимизации. Думаю что и MQ сможет если захочет - ускорение получается в разы пропорционально количеству ядер.

 
>> в разы пропорционально количеству ядер.

Бред. А памяти у Вас тоже две? А диска? Ускорение в 2 раза - утопия. Хорошо, если получится в полтора.
 
kniff писал (а):
>> в разы пропорционально количеству ядер.

Бред. А памяти у Вас тоже две? А диска? Ускорение в 2 раза - утопия. Хорошо, если получится в полтора.

Ну а что память при генетическом алгоритме там зарожаются популяции и два поиска решения могут выполнятся параллельно как две задачи.
В процессоре СoreDuo например один общий большой кэш воторого уровня и два ядра однако это не мешает ускорять задачи почти в два раза если есть два потока. Может быть это и было бредом если бы у друга программа оптимизации, которая использует генетический алгоритм и так же нейронные сети не работала в два раза быстрее при добавлении ещё одного потока который паралельно ведёт прогон по данным с основным. К тому же можно сделать и копию данных для каждного потока тогда будет ещё быстрее. Токльо тогда при оптимизации МТ вообще всю память сожрёт и свопфайла не хватит на диске :)
 
Подождите, господа, с точки зрения разработчиков есть процессы (processes) и есть потоки (threads), это разные вещи.
Процесс суть есть запуск самостоятельного исполняемого файла с помощью функции ::CreateProcess() Win32 API с отдельным адресным пространством.
Например, можно запустить калькулятор Windows.
    if (::CreateProcess(
        NULL,    // pointer to name of executable module
        "calc.exe",    // pointer to command line string
        NULL,    // pointer to process security attributes
        NULL,    // pointer to thread security attributes
        FALSE,    // handle inheritance flag
        0,//CREATE_NEW_CONSOLE,    // creation flags
        NULL,    // pointer to new environment block
        NULL,    // pointer to current directory name
        &StartInfo,    // pointer to STARTUPINFO
        &ProcessInfo     // pointer to PROCESS_INFORMATION
    ))
    {
        // Wait for finish of child process
        if (ProcessInfo.hProcess)
            ::WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
 
        DWORD exitCode = 0;
        ::GetExitCodeProcess(ProcessInfo.hProcess, &exitCode);
 
        ::CloseHandle(ProcessInfo.hThread);
        ::CloseHandle(ProcessInfo.hProcess);
    }
А внутри одного процесса можно запускать несколько потоков с помощью API функции ::CreateThread(), разруливая одновременный доступ к данным с помощью, например, критических секций Win32 API (::EnterCriticalSection, ::LeaveCriticalSection), если мы говорим о стандартном VC++. В .NET языках ещё проще.

Так вот, речь идёт не о потоках, их можно и на обычной однопроцессорной машине создавать достаточно много. Речь идёт о нескольких процессах, а изначально я ставил вопрос вообще не о многоядерности, а о 64-хбитной адресации и работе терминала под x64 версиями Windows (XP, Server 2003 и Vista) - проверялось ли это, будет ли терминал работать.
 
Можно взять и проверить.

>>Может быть это и было бредом если бы у друга программа оптимизации, которая использует генетический алгоритм и так же нейронные сети не работала в два раза >>быстрее при добавлении ещё одного потока который паралельно ведёт прогон по данным с основным. К тому же можно сделать и копию данных для каждного потока >>тогда будет ещё быстрее.

Это взгляд на жизнь через розовые очки. "Почти в 2 раза" это и есть мои предположенные 1.5. Коли интересно - можете проверить :) Просто обычное решение СЛУ распараллелить - задача далеко нетривиальная, так чтобы близко к 2-м было ускорение. А тут - совсем без оптимизации работы MT с памятью - думаю чуда не будет.

ОС работает с потоками. Именно им планировщик выделяет время, именно им ставят приоритет. Процесс - это просто еще и общее виртуальное пространство памяти, все равно именно на каждый поток вроде бы делается дескриптор в соответствующей таблице защищенного режима (могу ошибаться)
 
kniff писал (а):
Можно взять и проверить.

>>Может быть это и было бредом если бы у друга программа оптимизации, которая использует генетический алгоритм и так же нейронные сети не работала в два раза >>быстрее при добавлении ещё одного потока который паралельно ведёт прогон по данным с основным. К тому же можно сделать и копию данных для каждного потока >>тогда будет ещё быстрее.

Это взгляд на жизнь через розовые очки. "Почти в 2 раза" это и есть мои предположенные 1.5. Коли интересно - можете проверить :) Просто обычное решение СЛУ распараллелить - задача далеко нетривиальная, так чтобы близко к 2-м было ускорение. А тут - совсем без оптимизации работы MT с памятью - думаю чуда не будет.

ОС работает с потоками. Именно им планировщик выделяет время, именно им ставят приоритет. Процесс - это просто еще и общее виртуальное пространство памяти, все равно именно на каждый поток вроде бы делается дескриптор в соответствующей таблице защищенного режима (могу ошибаться)

Ну я видел как рабоатет программа оптимизации с генетическим алгоритмом при одном потоке и двух память с котировками для каждого потока своя так что они не борятся за память и ускорение было в два раза, но больше чем полтора. Если хотите напишите свою программу оптимизации и проверте. Одно дело предполагать а другое дело видеть на практике пример реализации.
Причина обращения: