Немного удивлен :) Решил поделиться и задать НЕ риторический вопрос. - страница 22

 
MetaDriver:

1. Это однократная операция для каждого дубля. Проигрыш незначительный, затем сплошные выигрыши. :) Предполагаю, что исходный котир однократно логарифмируется и переводится в целочисленное представление.

2. Это верно. Хотя и быстро, ибо есть шустрый алгоритм использующий битовые сдвиги.

3. не больше чем проверок на переполнение лонгов.

4. целочисленную часть выделять совсем не нужно. дробь хранится как пара лонгов. а при возможности - как пара интов.

5. ровно столько же, если хранить как пару лонгов, и вдвое меньше в случае, если достаточно интов (это от требовательности алгоритма зависит).

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

При том, что основная фишка вовсе не в экономии памяти, а в ускорении. Это куда важнее.

--

С Академиком проблема не в том, что он неправ. А в том, что выставляет других неправыми.

Это и вызывает раздражение присутствующих и отторжение здоровых идей... вместе с грязной водой... :(

Владимир ты ничего не путаешь? То что ты описал это низкоуровневая арифметика дубль и флот, та же арифметика что предлагает ввести "Академик" для хранения требует (даже без выделения целой части) как минимум две мантисы.

Ну и где же тут экономия. 8 байт для дубля и 2*4 байт для инта.

В лучшем случае ты придёшь к тому результату который уже и так реализован.

 
Urain:

Владимир ты ничего не путаешь? То что ты описал это низкоуровневая арифметика дубль и флот, та же арифметика что предлагает ввести "Академик" для хранения требует (даже без выделения целой части) как минимум две мантисы.

Ну и где же тут экономия. 8 байт для дубля и 2*4 байт для инта.

В лучшем случае ты придёшь к тому результату который уже и так реализован.

Так храните все поинты ( знаменатели)  одноразмерных величин в одном месте - они же одинаковые. :) 

Заведите тип - величина в одной десятой пункта и все. И храните этот знаменатель отдельно.

 
MetaDriver:

Я попробую. На mql5, ежли уж пошла такая пьянка... :)

Время только понадобится. Библиотечку написать придётся.

Я как то пробовал, конфет там нет, только время потратишь.

Разложи дубль в двоичное число,  и представь его в виде двух интов и поймёшь что всё что ты описываешь уже реализовано в арифметике дубль.

ЗЫ Только арифметика реализована на низком уровне, а ты это будешь делать на более высоком на чём потеряешь быстродействие и память.

 

Мои пять копеек.

Целые числа - это более естественный способ представления информации о котировках. В конце концов, число пунктов оно не может быть не целым. Хранение таких чисел более экономично, а значит и скорость загрузки на уровне диск-память, и память-процессор - выше. Алгоритмы обработки, если они составлены грамотно, - гораздо более быстрые чем алгоритмы с вещественными числами, а с учётом пакетных операций SSE, так вообще вне конкуренции. Но, есть одно большое но с целыми числами - работать с ними могут только считанные люди. Ну и конечно же, в терминале должна быть поддержка asm. Для массового потребителя MQ эти числа не подходят.


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


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

 
Urain:

Я как то пробовал, конфет там нет, только время потратишь.

Разложи дубль в двоичное число,  и представь его в виде двух интов и поймёшь что всё что ты описываешь уже реализовано в арифметике дубль.

ЗЫ Только арифметика реализована на низком уровне, а ты это будешь делать на более высоком на чём потеряешь быстродействие и память.

"Не догоню, так согреюсь", как говаривал петух бегущий за курицей... :)

На самом деле я давно подумываю на эту тему, видимо пора уже попробовать.

 
MetaDriver:

"Не догоню, так согреюсь", как говаривал петух бегущий за курицей... :)

На самом деле я давно подумываю на эту тему, видимо пора уже попробовать.

Рекурентный алгоритм НОД дать?
 
TheXpert:

Да зачем? С++ принимается.

Посмотрю. Пощупать надо сначала. Мне самому интересно.
 
Urain:
Рекурентный алгоритм НОД дать?
Если с битовыми сдвигами - давай. Если с делением по модулю, то не надо.
 
MetaDriver:
Если с битовыми сдвигами - давай. Если с делением по модулю, то не надо.

Ты собираешься одно ( не обязательно кратное 2 ) число, делить на другое ( не обязательно кратное 2 ) число, через битовый сдвиг?

Ладно кину что у меня есть, а там сам думай нужно или нет.

//+------------------------------------------------------------------+
long GreatestCommonDivisor(long v0,long v1)
  {
   return(GCD(fmax(fabs(v0),fabs(v1)),fmin(fabs(v0),fabs(v1))));
  }
//+------------------------------------------------------------------+
long GCD(long max,long min)
  {
   if(min>0)return(GCD(min,max%min));
   else return(max);
  }
//+------------------------------------------------------------------+
 
DDFedor:
Смайлы в последующих Ваших постах будут вырезаны. Учитывайте это.

спс хоть признались - Вы смайлы режете, но кто целые посты удаляет?

по сабжу, Academic, то, что у Вас есть так называемая "считалка" - это отлично, хотелось бы уточнить, а есть у Вас возможность автоматической оптимизации в ходе торговли?