Ошибки, баги, вопросы - страница 2572

 

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

 
fxsaber:

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

Они не пишутся на диск с каждым обновлением

 
fxsaber:

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

Я думаю, что глобальные переменные терминала реализованы через ресурсы с периодическим автосохранением на диск. Не думаю, что автосохранение происходит чаще, чем раз в 3 секунды, скорее всего гораздо реже, и даже не исключено, что только только при наступлении события deinit.

 

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

проще проверить, в Виндовс в диспетчере задач есть диаграмма использования жесткого диска


 
Igor Makanu:

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

проще проверить, в Виндовс в диспетчере задач есть диаграмма использования жесткого диска


Наверно тут в примечании

 
Спасибо всем ответившим. Flush-функция сразу отмела все двоякие толкования.
 

О, да, тогда точно можно не беспокоиться за перегруз диска.
Меня только вот удивляет использование глобальных переменных терминала (если о них речь) для сохрания больших массивов данных. 
Это ведь жуткий костыль. 

Ладно сами переменные, но ведь существуют же их string имена, который нужно тоже хранить и еще делать каждый раз string поиск для доступа к этой переменной, не говоря даже о единственном типе double, который можно сохранять. Понятно, что можно использовать union, но ведь его использование тоже не бесплатное.

Гораздо правильнее реализовать сохрание самостоятельно через ресурсы любых массивов данных с переодическим автосохранением на диск или при наступления события deinit

 
Nikolai Semko:

Ладно сами переменные, но ведь существуют же их string имена, который нужно тоже хранить и еще делать каждый раз string поиск для доступа к этой переменной, не говоря даже о единственном типе double, который можно сохранять. Понятно, что можно использовать union, но ведь его использование тоже не бесплатное.

была у меня идея и желание глобальные переменные использовать, но что то решил по старинке на диск сохранять, тем более сейчас стал писать коды максимально правильно - данные в структурах храню, а сбрасывать структуры на диск можно в один клик - FileWriteStruct()



так вот, глобальные переменные "нужно использовать с точностью до наоборот"  - данные нужно хранить в имени глобальной переменной. а контрольную сумму в double с помощью Base64 - все готово в CryptEncode(), а в идеале вообще  Base85  ( Ascii85 ) или видел где то исходники на гитхабе Base128

и если не ошибаюсь, то имя глобальной переменной терминала 256 символов? эффективность Base64 чуть более 60% ( размер ), у остальных методов кодирования выше - итог в одной глобальной переменной 160-180 байт можно хранить

правда определять данные по префиксу придется, но в целом будет работать все это - тем более глобальные переменные редко кто использует - все имена свободные по сути

 
Igor Makanu:

была у меня идея и желание глобальные переменные использовать, но что то решил по старинке на диск сохранять, тем более сейчас стал писать коды максимально правильно - данные в структурах храню, а сбрасывать структуры на диск можно в один клик - FileWriteStruct()



так вот, глобальные переменные "нужно использовать с точностью до наоборот"  - данные нужно хранить в имени глобальной переменной. а контрольную сумму в double с помощью Base64 - все готово в CryptEncode(), а в идеале вообще  Base85  ( Ascii85 ) или видел где то исходники на гитхабе Base128

и если не ошибаюсь, то имя глобальной переменной терминала 256 символов? эффективность Base64 чуть более 60% ( размер ), у остальных методов кодирования выше - итог в одной глобальной переменной 160-180 байт можно хранить

правда определять данные по префиксу придется, но в целом будет работать все это - тем более глобальные переменные редко кто использует - все имена свободные по сути

Все равно, чтобы добраться до переменной, нужно перебирать контрольные суммы, пока не встретиться нужная. А если переменных гугильён ?
Или отслеживать последовательность переменных и присваивать им индексы. Но это уже точно ни к чему, т.к. проще написать класс сохранения данных
 
Nikolai Semko:
проще написать класс сохранения данных

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

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