Что будет быстрее по скорости Memory Maped Files || FileWrite ?

 

Как вы думаете что будет быстрее по скорости Memory Maped Files или локальная функция FileWrite   с условием что файл будет размещен на RAMDisk ?

 
BillionerClub:

Как вы думаете что будет быстрее по скорости Memory Maped Files или локальная функция FileWrite   с условием что файл будет размещен на RAMDisk ?

Чисто теоретически, мне кажется, что Memory Maped Files должно быть быстрее, ибо для любого диска будут ещё накладные расходы на взаимодействие с файловой системой и, возможно, на кэширование (тут, в случае RAM-диска, может быть как плюс, так и минус).

 
JRandomTrader #:

Чисто теоретически, мне кажется, что Memory Maped Files должно быть быстрее, ибо для любого диска будут ещё накладные расходы на взаимодействие с файловой системой и, возможно, на кэширование (тут, в случае RAM-диска, может быть как плюс, так и минус).

RAMDisc, у меня показывает просто невероятную скорость, по сравнению с MMF. 

Но насколько результаты, релевантны, учитывая исполнение варианта  с MMF, от fxsaber, неизвестно. 


RAMDisc + WriteString 50к циклов записи 16мс

MMF                           50к  циклов  записи  953мс 

 
JRandomTrader #:

Чисто теоретически, мне кажется, что Memory Maped Files должно быть быстрее, ибо для любого диска будут ещё накладные расходы на взаимодействие с файловой системой и, возможно, на кэширование (тут, в случае RAM-диска, может быть как плюс, так и минус).

Да вы были правы моя ошибка. Если открывать и закрывать файл то  Memory Maped Files намного  быстрее. Без закрытия файла файл это тоже по сути  Memory Maped Files только без совместного доступа

 
BillionerClub #:

Да вы были правы моя ошибка. Если открывать и закрывать файл то  Memory Maped Files намного  быстрее. Без закрытия файла файл это тоже по сути  Memory Maped Files только без совместного доступа

Я не знаю, как под виндой, а у меня под Линуксом есть ощущение, что файловые операции из MQL5 очень сильно тормозят. Создание/удаление десятков тысяч файлов из MQL5 в разы, если не на порядки, медленнее баш-скрипта.

И, похоже, основные тормоза - работа с каталогом. Возможно, это издержки Wine и/или работы с неродной файловой системой (EXT4).

 

Что то не особо заметны скорости RAMDISC по сравнению с HDD/ HDD Быстрее RAMDisc ))  1844 ms  2813 ms  как такое возможно не понятно )) 



#property script_show_inputs
input int sleep=200;
#include <Files\FileBin.mqh>
input string InpName ="RAMDiscs\\";

#define MAX_SIZE 2000
CFileBin O;
void OnStart()
  {
//---
   int  data =0;
   uint start=GetTickCount();
   int size = sizeof(int);

   for(int i=0; i<MAX_SIZE; i++)
     {

      O.Open(InpName+IntegerToString(i),FILE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_BIN);
      O.WriteInteger(i);
      O.Close();
     }

//--- Get the spent time in milliseconds
   uint time=GetTickCount()-start;
//--- Output a message to the Experts journal
   PrintFormat("Calculating %d RAMDisc writing took %d ms",MAX_SIZE,time);

  }
//+------------------------------------------------------------------+
 
BillionerClub #:

Что то не особо заметны скорости RAMDISC по сравнению с HDD/ HDD Быстрее RAMDisc ))  1844 ms  2813 ms  как такое возможно не понятно )) 

Вот это, возможно, кэширование.

Обычный диск не выдаст более 60-100 рандомных IOPS. Тут их явно должно быть в разы больше, но, возможно, не столь рандомных.
 
BillionerClub #:

Что то не особо заметны скорости RAMDISC по сравнению с HDD/ HDD Быстрее RAMDisc ))  1844 ms  2813 ms  как такое возможно не понятно )) 



спасибо, повеселили на выходных ! вы измеряли скорость открытия/закрытия файла (работу ОС) , а не чтения/записи. Ещё и через ненужную OO прослойку

поработайте например с базой SQLite на RamDisc и HDD... 

 
Maxim Kuznetsov #:

спасибо, повеселили на выходных ! вы измеряли скорость открытия/закрытия файла (работу ОС) , а не чтения/записи. Ещё и через ненужную OO прослойку

поработайте например с базой SQLite на RamDisc и HDD... 

Наверное через Symlink RAM не увидеть или HDD не дает скорости 
 
JRandomTrader #:

Вот это, возможно, кэширование.

Обычный диск не выдаст более 60-100 рандомных IOPS. Тут их явно должно быть в разы больше, но, возможно, не столь рандомных.

Да. Скорее всего RAMDisc, не работает через Symbolic Linc.  

 
JRandomTrader #:

Вот это, возможно, кэширование.

Обычный диск не выдаст более 60-100 рандомных IOPS. Тут их явно должно быть в разы больше, но, возможно, не столь рандомных.

Кэширование