Snusmumriken
Потому что ты не первый кто приходит с quik, а я не торгую потому что считаю эту деятельность крайне ненадёжной.
Snusmumriken
Смотри какая смешная фигня https://redis.io/topics/pubsub
Snusmumriken
Условно, твой QUIK-клиент потрошит ТОС на фигню и пушит в каналы редиски, подписанные клиенты (другие приложения) перехватывают и что-то с ними делают, потом ссылают результат обработки в какой-нибудь канал где их прочитает кто-то ещё. Готовый пайплайн.
Rider
пушит он только мне)) зачем мне ктото)) деньги любят тишину)
Rider
Если не секрет, чем занимаешься по жизни?
Rider
Программирую.
Я так понимаю давно) а языки?
Snusmumriken
Lua, Python, JS, C(++), D, основной рабочий — Lua.
Rider
Что такое D? А Lua - в чем преимущества?
Snusmumriken
Lua преимущество в том, что оно не трахает тебе мозги, в отличии от большинства других. Очень тупая внутрення организация и лёгкое встраивание. Из первых двух пунктов вытекает весьма приличная скорость для скриптов, особенно в интерпретаторе Luajit. Но мощен, лаконичен и приятен. D — язык, считай что переизобретение C++, но без говнях которым С++ наполняли десятилетиями. Очень приятен но не очень богат на инструменты.
Rider
к слову, текущая ТОС - 5,6 лямов строк
Snusmumriken
Я много общаюсь с людьми и разбираю проблемы, просто несколько лет практики.
Rider
Я много общаюсь с людьми и разбираю проблемы, просто несколько лет практики.
В любом случае, спасибо огромное! Если - мало ли - начнете смотреть на рынок, и что-то заинтересует, я готов оказать помощь, с вами интересно работать....
Rider
Сегодняшняя ТОС, Что быстрее всех превратит ее в отдельные файлы?
Rider
Или давайте не так. Пока что схема такая. Машина 1. стоит квик и пишет полную тос в файл (текстовый) . Я не знаю на что способен квик с сокетами и тд. я не нашел решения, возможно их и нет, квик и запуск стороннего скрипта вроде не позволяет . Машина 2. постоянно читает это файл с сетевого диска и разбирает на части. в течение времени они чередуют себя - запись чтение. в итоге вечером у нас 5 миллионов строк. первая машина с квиком исполняет все хорошо, и ее нельзя нагружать! она наш трансфер! и вот вторая спотыкается, т.к она перечитывает с начала, и у нее уходит 18 секунд до начала считывания новых данных. Цель 1 секунда.
Snusmumriken
file:seek("set", position), время от времени получай текущий курсор файла через local position = file:seek() Подобные операции перемещения курсора чтения файла практически мгновенны.
Rider
с++ может так же?
Snusmumriken
Seek — это стандартная операция во всех ОС. Что за приложения занимаются считыванием?
Snusmumriken
Разумеется может.
Rider
Delphi
Snusmumriken
Разумеется. Это стандартная операция, её поддерживает практически любой ЯП. http://www.delphibasics.ru/Seek.php
Rider
я в курсе) но файл у нас текстовый
Snusmumriken
Не имеет значения.
Snusmumriken
http://delphi.scps.ru/file/file5506.htm
Snusmumriken
Ну вот так вот, не имеет значения, бинарный файл или текстовый. Берёшь и гуляешь по нему курсором.
Snusmumriken
По умолчанию, при открытии файла на чтении, курсор находится в начале файла. При чтении, например, строки — курсор перемещается на начало следующей. Seek — установка курсора чтения в произвольное место со смещением, как правило, по байтам.
Snusmumriken
Единственная потенциальная разница при открытии текстового или бинарного файла — есть шанс что при чтении оно будет игнорировать неотображаемые ascii-символы в текстовом.
Rider
я сейчас перекомпилю проект
Snusmumriken
Ну в общем, если у тебя кучу времени занимает обработка — время от времени сохраняй где-нибудь прогресс и стартуй с последнего запомненного места.
Snusmumriken
Или пили свой TOC на кучу мелких табличек, которые быстро обрабатываются.
Snusmumriken
Слышал что-нибудь про методику map-reduce?
Rider
[DCC Error] _reader_tos_from_lan.dpr(84): E2008 Incompatible types
Rider
роцедура Seek перемещает текущую позицию записи в открытом двоичном файле указанном FileHandle в новою позицию RecordNumber. Файл, должно быть, был назначен AssignFile и открыт с помощью Reset или ReWrite. Для нетипизированных файлов, размер записи устанавливается используя подпрограммы Reset или ReWrite. Для типизированных файлов, размер записи = SizeOf(тип файла). Первая запись в файле 0 запись.
Джифорсович
Rider
Или пили свой TOC на кучу мелких табличек, которые быстро обрабатываются.
в этом и смысл, клиент качает тос - это квик - остальные дербанят
Snusmumriken
роцедура Seek перемещает текущую позицию записи в открытом двоичном файле указанном FileHandle в новою позицию RecordNumber. Файл, должно быть, был назначен AssignFile и открыт с помощью Reset или ReWrite. Для нетипизированных файлов, размер записи устанавливается используя подпрограммы Reset или ReWrite. Для типизированных файлов, размер записи = SizeOf(тип файла). Первая запись в файле 0 запись.
https://ru.wikipedia.org/wiki/MapReduce Грубо говоря, у тебя есть очень большие данные которые нужно обработать. Ты берёшь и распиливаешь данные на небольшие блоки и рассылаешь куче приложений/машин (map), которые параллельно посчитают результат, и вышлют тебе обратно, отфильтровав лишнее и минимизировав размеры ответа (reduce), на основе которых уже можно строить выводы.
Snusmumriken
В чём цимес: скорость обработки задачи ускоряется примерно в N раз, где N — количество решающих задачу машин (приложений, ядер цпу и т.д).
Snusmumriken
Грубо говоря, ты можешь распилить свой файл на N подфайлов для каждой машины. В результате, время ожидания ответа уменьшится до ожидания пока самая последняя принявшая кусок машина решит свой кусочек.
Rider
текущая ситуация - г.ноут амд а6....
Rider
вторая машина одна
Rider
лаг при одной, пока я читаю файл и пропускаю то что не надо у меня уходит 18-25 секунд
Snusmumriken
Сколько ядер процессора на второй машине? )
Snusmumriken
Ты можешь смело запускать на ней N - 1 задачек, занимающихся вычислениями. Одно ядро оставляешь под нужды ОС и файловые операции, а остальные смело могут читать файлы и считать.
Rider
Собственно я на ней)
Snusmumriken
Ну вот и отлично, ускоряешь процесс обработки в три раза легко.
Rider
тут вопрос к языку скорее всего...
Snusmumriken
Нет. Просто открываешь ТРИ приложения, каждое грызёт свой файлик или, например, каждую третью строку в файлике со смещением. ОС разберётся кому какое ядро выделить.
Snusmumriken
Корутины и прямые аналоги не ускоряют вычисления.
Rider
смотри. есть файл. из него надо сделать быстро . например . SI). Ну и как ты это предлагаешь сделать? оно тестовооое!
Snusmumriken
Как вычисляется SI?
Snusmumriken
Ну примерная формула.
Rider
Как вычисляется SI?
это инструмент) фьючерс бакса)Фьючерс – это биржевой контракт, предусматривающий обязанность покупки/продажи базового актива в будущем по цене, зафиксированной в момент сделки. Базовым активом фьючерса может служить товар (например, нефть или золото), акция, биржевой фондовый индекс и другие активы. Торговать фьючерсом зачастую удобнее и дешевле, чем самим базовым активом.
Snusmumriken
local data = { {a, b, c, d}, {a, b, c, d}, {a, b, c, d}, } local SI= 0 for i, v in ipairs(data) do SI = SI + v.a / v.b - v.c end Формула какая-нибудь?
Snusmumriken
При обработке массивов данных ты, как правило, можешь получить какие-то промежуточные данные, из которых уже побырому собрать что-то готовое, например, просуммировав результаты, вычислив среднее арифметическое или что-то такое.
Rider
да)
Rider
ты уже сам себе ответил..
Snusmumriken
И вот если параллелить самую сложную часть и сохранить где-нибудь промежуточные данные, ты можешь распараллелить что-то сложное и ускорить эту часть в N раз, где N это количество распараллеленных мест.
Snusmumriken
Я хотел какого-то кодового примера функции, чтобы я мог дать пример как это можно распараллелить.
Snusmumriken
Просто если ты хочешь ускорять — тебе придётся это делать, распараллеливаемость это слишком большой профит в скорости. В противном случае твой кампуцер нагружен только на 1/N (в твоём случае, на четверть из возможного). Ускорение в два-три-четыре раза это МНОГО, особенно при обработке чего-то средне-крупного.
Rider
дай я подумаю) както мысли поплыли мои)
Rider
у меня есть сжатый тос. очень давно. это ускоряет....... думаю дальше
Snusmumriken
О, я посмотрел, кстати quik вполне тянет луасокеты обыкновенные, либа просто подрубается как обычная dll.
Rider
в принципе с приложением и контурами я все уже сделал по максимуму... в том языке. и меня устраивает. лаг сейчас в том, что я имею задержку в дельфине при чтении файла, пока он доберется до нужной строки проходит 18 секунд.
Snusmumriken
Ну вот с этой частью я уже сказал, file seek должно работать, найди в гугле тот вариант который заработает или пошамань, они точно есть.
Snusmumriken
Я проверил, обычная ли луа туда встроена, или кастомный интерпретатор. Ответ: обычная.
Snusmumriken
n[n? тхт? txt?
Rider
n[n? тхт? txt?
сорян тхт, csv
Snusmumriken
Объясни утечку памяти тогда
Ммм, в чём она выражается? Растёт потребление памяти при работе приложения?