Size: a a a

2020 September 20

SB

Sergey Bodrov in Delphi & Lazarus
Шляпник
я не трогаю бигдату, я говорю о просто высоконагруженных запросах
Это и есть бигдата
источник

SB

Sergey Bodrov in Delphi & Lazarus
Или все же highload имеется в виду? Тоже отдельная тема.
источник

Ш

Шляпник in Delphi & Lazarus
Sergey Bodrov
Это и есть бигдата
"Что такое Big data?
Большие данные — технология обработки информации, которая превосходит сотни терабайт и со временем растет в геометрической прогрессии." определние с одного из сайтов. Я же говорил о миллионах записей, они дай боги до терабайта доползут в объёме хранения
источник

Ш

Шляпник in Delphi & Lazarus
например, при формировании сложных кубов уже несколько сотен тысяч записей может стать проблемой по скорости выполнения
источник

SB

Sergey Bodrov in Delphi & Lazarus
В моем хайлоаде проблема не в ресурсах, а в инструментах и методиках. В межпроцессных блокировках, фрагментации памяти, устойчивости к скачкам нагрузки.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Шляпник
например, при формировании сложных кубов уже несколько сотен тысяч записей может стать проблемой по скорости выполнения
Асскмблер и методики для микроконтроллеров в этом не помогут. Достаточно хорошо знать и уметь применять стандартные инструменты.
источник

Ш

Шляпник in Delphi & Lazarus
опять же один из минусов отсутствия понимания оптимизации в запросах приводит к тому, что мы встречаем порой легаси запросы, например, с преобразованием значений на этапе слияния записей, вместо применения на завершающем этапе или на этапе фильтрации результата
источник

Ш

Шляпник in Delphi & Lazarus
Sergey Bodrov
Асскмблер и методики для микроконтроллеров в этом не помогут. Достаточно хорошо знать и уметь применять стандартные инструменты.
я там немного нелогично наверное переход сделал :) от частности к оптимизации в целом
источник

SB

Sergey Bodrov in Delphi & Lazarus
Шляпник
опять же один из минусов отсутствия понимания оптимизации в запросах приводит к тому, что мы встречаем порой легаси запросы, например, с преобразованием значений на этапе слияния записей, вместо применения на завершающем этапе или на этапе фильтрации результата
Вот. А ещё всякие мелочи вроде постраничного fetch результатов, подбор индексов, денормализации базы.. там 90% ускорения можно добиться просто правильным SQL запросом.
источник

Ш

Шляпник in Delphi & Lazarus
Sergey Bodrov
Вот. А ещё всякие мелочи вроде постраничного fetch результатов, подбор индексов, денормализации базы.. там 90% ускорения можно добиться просто правильным SQL запросом.
👍
источник

AK

Alexey Kulakov in Delphi & Lazarus
Вопрос больше фрипаскалистам. Кто-то из вас, кроме меня, хоть иногда использует директивы $push/$pop?
источник
2020 September 21

S

Serjone in Delphi & Lazarus
procedure TFm.PlaySound(SoundName:string);
begin

if mPlayer<>nil then
  begin
   mPlayer.Destroy;
  end;
if not CbPlaySound.Checked then exit;// выходим, если в настройках не воспроизводить звук

if (FileExists(SoundName+'.mp3'))
 then
   begin
     mPlayer:=TMCIPlayer.Create(SoundName+'.mp3',fm.Handle);
     _sleep(StrToint(EdSoundDelay.text));
     mPlayer.Play;
     Fm.Richout('play: '+SoundName+'.mp3', clBlack, [fsBold]);
   end
  else Fm.Richout('File not found: '+SoundName+'.mp3', clBlack, [fsBold]);
end;
Есть такая конструкция - воспроизводит звук по имени файла. В самом начале проверяю, есть ли экземпляр мплеера, дабы не создать его второй раз и не запустить звук параллельно с уже идущим, всё хорошо работает и воспроизводит. НО! Мне понадобилось запускать в обработчике собырия хттп сервера
procedure TFm.IdHTTPServer1CommandGet(AContext: TIdContext;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
И если я два раза подряд посылаю команду запустить звук, то запускается параллельно два трека. Предполагаю, что это из-за того, что сервер работает в отдельном потоке и при запуске в этом новом потоке, ничего не знает об уже созданном
mPlayer
как отследить что воспроизведение звука уже запущено в другом потоке?
источник

S

Serjone in Delphi & Lazarus
вернее, почему не срабатывает if mPlayer<>nil then?
источник

RS

Renat Suleymanov in Delphi & Lazarus
Если другой поток, то архитектуру нужно по другому строить. Если звук должен вопроизводится в последовательно, то его можно выделить в отдельный поток. А добавлять в поток задание на воспроизведение через потоконезависимый стек. к примеру. РЕализаций может быть много. Можно проверки сделать глобальной переменной через критический секции.
А вообще код непонятен, непонятно почему согласно коду, он не может запускаться параллельно. За счет какого условия?
источник

S

Serjone in Delphi & Lazarus
Renat Suleymanov
Если другой поток, то архитектуру нужно по другому строить. Если звук должен вопроизводится в последовательно, то его можно выделить в отдельный поток. А добавлять в поток задание на воспроизведение через потоконезависимый стек. к примеру. РЕализаций может быть много. Можно проверки сделать глобальной переменной через критический секции.
А вообще код непонятен, непонятно почему согласно коду, он не может запускаться параллельно. За счет какого условия?
if mPlayer<>nil then
  begin
   mPlayer.Destroy;
  end
;
вот это разве не должно убивать плеер, если он уже запущен? как он создаётся второй раз?
источник

RS

Renat Suleymanov in Delphi & Lazarus
mPLayer - глобальная переменная что ли? Или поле класса?
Ну вот допустим идет воспроизведение. Из другого потока запускается снова эта процедура. С чего вдруг она будет ожидать окончания воспроизведения?
источник

S

Serjone in Delphi & Lazarus
глобальная переменная
источник

S

Serjone in Delphi & Lazarus
Renat Suleymanov
mPLayer - глобальная переменная что ли? Или поле класса?
Ну вот допустим идет воспроизведение. Из другого потока запускается снова эта процедура. С чего вдруг она будет ожидать окончания воспроизведения?
Она не должна ждать окончания. Она должна уничтожить текущий мплеер и создать новый
источник

RS

Renat Suleymanov in Delphi & Lazarus
Serjone
Она не должна ждать окончания. Она должна уничтожить текущий мплеер и создать новый
Уничтожение должно остановить воспроизведение? Просто я не знаком с классом TMCIPlayer
источник

RS

Renat Suleymanov in Delphi & Lazarus
Просто если вопроизведение асинхронное, то скорее всего запускается воспроизведение внутренний службами ОС и все. А процесс идет дальше. Даже если уничтожить объект
источник