Можно найти, что эта тема (чудовищная конкатенация строк в Луа) волнует народ в районе англоязычного stackoverflow, а здесь создатель Луа предлагает такую полумеру: https://www.lua.org/pil/11.6.html
Тут дело не в том, что есть запись на диск, а в том, что за 1 мкс десятки раз может выполняться оператор
Код
mess = mess .. <строка от коллбэка>
что будет приводить к созданию новой строки и переписыванию в неё содержимое старой, которую должен убрать сборщик мусора. И ЦП будет занят этой бесполезной издевательской работой. Я считаю, что в этом причина торможения.
И всё-таки, я на этом форуме несколько раз видел, что людям издавна не хватает скорости (и для них это "жизненно важно"), а наращивание числа ядер и повышение тактовой частоты мало что не даёт, вот ещё пример такой темы: https://forum.quik.ru/forum10/topic3872/
А геологам просто надо держать свои снегоходы заведёнными.
Мне кажется, что ничего не случится, если извне (из длл) строка будет изменена, ведь, если строка не находится внутри таблицы, вычисление хеша от неё не нужно?
Как-то уже об этом писал... Есть строка mess (age), в которой коллбэки накапливают свой вывод, при превышении определённой длины строка записывается в файл. Потом обычно пишут mess='', чтобы сбросить длину строки в 0, но что в этом случае произойдёт? Создастся новая строка, или в структуре TString для этой строки её длина установится в 0? Я не вижу, где хранится число байтов, выделенных под строку, и как контролируется выход за её предел при дописывании к строке? Не хочется ненужного пересоздания строки и сборки мусора, а хочется просто зарезервировать под строку 10 Мб и использовать эту же память под строку постоянно. Зачем выметать сор из избы строки, если можно обойтись без этого? Как это всё оптимизировать и сделать, как в нормальных языках типа того же си?
Похоже, что DNS не ускорит работу Квика, хотя, в доступных соединениях у Сервер1 и Резерв стоят IP, а у Сервер 2 в столбце IP стоит почему-то quik.vtb.ru.
nikolz написал: Serge123 , А Вы знаете, зачем нужен DNS? ---------------------- Судя по вопросу, Вы этого не знаете. ---------------------- Прочитайте в интернете и вопрос отпадет сам собой.
Я когда-то знал это, даже своей программкой получал пакет по UDP с корневого сервера. Сейчас поискал в Гугле, зачем нужен DNS, оказалось, что для того же, для чего и раньше:
=== DNS (система доменных имен) преобразует доменные имена, удобные для человеческого восприятия (например, www.amazon.com), в IP-адреса, понимаемые машиной (например, 192.0.2.44). ===
и вдобавок
=== Какой DNS самый быстрый? 1.1.1.1 — самый быстрый в мире, ориентированный на конфиденциальность DNS-резолвер ===
Сегодня увидел, что кое-кто на западе советует установить самые быстрые и бесплатные DNS 1.1.1.1 и 1.0.0.1, например: nimaboldi.uz/как-настроить-в-windows-10-самый-быстрый-dns/ Есть ли от этого польза В РФ? А есть ещё DNS от Гугла 8.8.8.8. Что из этого всего лучше?
Добавлю отсебятину: в Lua для логического типа и типа nil не используется память под данные: просто байт для хранения типа переменной указывает, что тип этой переменной nil. Для логического типа байт типа указывает, что это лог. тип, а дополнительный бит в этом байте равен 0/1 в случае false/true.
В Луа нет опции предупреждать об использовании необъявленных переменных, как это сделано в Перле, поэтому могут возникать труднонаходимые ошибки. Есть ли какие-нибудь сторонние программы для проверки скриптов на такие описки?
Constantin написал: Я тоже свою систему написал. Правда не торгую.
Она у вас по какому принципу покупает: по индикаторам, по всплеску цены акции, по минимуму у волны в коридоре цен?.. При проверке работы в плюсе торгует?
Вернее, дело не в звуковом устройстве: в упрощённом варианте команд файлы с пробелами не играются, а в той форме, что была у w32, как помню, они игрались.
Для чего в Си и в Луа в путях ставят две обратных косых вместо оной прямой, ведь Виндовс в путях понимает одну прямую косую: C:/Windows/Media/Alarm09.wav?
В принципе, получился неплохой подарок к 8 Марта (а чем я хуже женщины?) Но неработоспособность в некоторых случаях омрачает предпраздничное настроение...
Nikolay написал: Можно даже проигрывать кусок из файла.
Я на те страницына сайте МС смотрел, не нашёл, как смешивать звуки. Я сейчас сделал аналог того, что у меня игралось в dll:
Код
#include <stdio.h>
#include <windows.h>
#include <Mmsystem.h>
int main()
{ if (!mciSendString("OPEN C:\\Windows\\Media\\chord.wav TYPE MpegVideo ALIAS QUIK_MP3", NULL, 0, NULL)) puts("fail");
mciSendString("PLAY QUIK_MP3", NULL, 0, NULL);
return 0;
}
Не играет, выдаёт fail. Не пойму, почему это работает в dll для Квика. Такое впечатление, что в консольной программе mciSendString не работает. А у вас как? Транслировать командой
Мне ваш пример с os.execute и 10-кратным появлением окна цмд перекрыл все стаканы... А если бы у меня в это время пошли сделки? Представляете свою материальную отвественность?
nikolz написал: Т е не надо никаких dll для этого , понятно?
Из моей темы, где я привёл свой пример на основе w32, было видно, что мне это понятно... И мне почему-то кажется, что SoundPlayer не может воспроизводить mp3.
nikolz написал: Кроме музыки, в модуле можно синтезировать предложения .
Круть. На след. этапе можно сделать виртуальную дикторшу. А для простых смертных у mciSendString предусмотрено проигрывание звука с заданного смещения и заданной длительности.
Кстати, если кто не знает, Буратино в этой сказке - это сам А. Толстой, Карабас-Барабас - Мейерхольд (которого Толстой не любил), а Дуремар - помощник Мейерхольда, которого звали Вольдемар. У др. героев тоже были прототипы. Поэтому не всё так просто.
Брокер ограничивает глубину стакана в 20/20, я установил 10/10. Во время выставления предварительных заявок (аукцион открытия) наблюдал такую картинку в стакане: виднеются 10 заявок на покупку и 10 на продажу, многие из них пересекаются. При этом по цене, которая через неск. сек. станет лучшей ценой покупки, видно много акций, а по цене на шаг выше не видно предложений продать, видны только предложения купить. В 1-й момент я подумал, что намечается какое-то мошенничество, почему-то захотелось снять свою крупненькую заявку на покупку и начать рвать на себе все волосы, раскладывая их в аккуратные кучки...
Но во 2-й момент я догадался, в чём дело: по логике программиста, если в стакане присутствуют 10 строк с красным фоном (на продажу) и 10 с зелёным, но при поступлении заявки на продажу ничего отображать не надо, хотя, общее число строк в стакане < 20 из-за пересечения довольно многих заявок на покупку и на продажу.
Раньше я удивлялся, для чего выставляют заявки на продажу по каким-то смешным ценам и, соответственно, на покупку? Возможно, это специально спамять стакан, чтобы у тех, кто ограничил его глубину, не было видно заявок по ценам, которые станут лучшими в момент начала торгов.
Не знаю, обсуждалось это или нет на форуме и как решить этот вопрос... Возможно, стоит подумать, чтобы отображать более 10 заявок на покупку/продажу, если общее число строк в стакане (в моём случае) < 20?