Thursday, October 6, 2016

фрагментация кучи


изображение иллюстрирует как я срочно чиню сломанный билд.

я тут наступил на багу с удалением памяти.
вот программа, в программу приходит по 4 гигабайта данных раз в минуту. т.е. приблизительно 4 гигантских таких картинки 10000х25000 числами одинарной точности. умные учоные хранят эти данные в виде приблизительно такой структуры
vector< vector<float> *> image;
там звездочка, это важно.
и до недавнего времени я заранее выделял все эти сорок тысяч массивов, какого нужно размера (потенциально разного), и жил с ними неделями, все работает, данные приходят, обрабатываются, сохраняются. а если геологи на передающей стороне АЦП подкрутили и теперь стали приходить внезапно кусоки другого размера, то я удаляю всю эту конструкцию последовательно и создаю заново, ровненько по нужным размерам, что бы не заморачиваться там в недрах с кодом, написанным 30 лет назад.

выделение быстро происходит, меньше секунды. а вот с удалением вышел сюрприз: первый раз этот балаган удаляется за одну секунду, а второй раз за 42 секунды уже; а третьего раза я не дождался; проверил на своем ноуте - повторное удаление уже 200 секунд.
виндовс7, рантайм - вижуал студия 2012.
вот это вот фрагментация кучи такая удивительная, да?
причем я подобное наблюдал уже и фиксил, при каждом приеме перевыделение одного гигабайта приводило к деградации по скорости. то есть где-то за день оно уже переставало успевать обрабатывать весь этот шум. то есть с 4 секунд до 60 время вырастало.
конец истории.
щас зарелизимся и я наверное наберусь смелости выкину всю эту ебалу, заменю на цельный кусок памяти размером с 4гб и пыщпыщ.
эй, бывшие коллеги, добавьте меня в свой слак, я вам интересного расскажу, бгг.

Sunday, August 14, 2016

Вот чего тут точно не хватает, так это баек про Петербург от Сергея Николаевича
В Питере когда-то было два места, где Булочная и Оптика стояли рядом. Одно из них - подворотня ИЭМ..
https://github.com/vpatryshev/fiction/blob/master/geology.md
А, Сергей Николаевич, а где было второе место "Булочной оптики"?

В Хьюстоне всюду играет рок, рок-н-ролл и кантри, не исключая детскую поликлинику, супермаркет (в супермаркете - ZZTop) и бесплатные благотворительные концерты на берегу озера. Кроме рока есть только наверное разухабистая мексиканская музыка с аккордеоном и прочим solidad. На следующей неделе пойдем в школу знакомится с учителем, будет день открытых дверей, там тоже наверное будет роцк.
В почтовый ящик бросают рекламу ковбойских сапогов для всей семьи.

Wednesday, May 25, 2016

вдруг кому интересно

граждане каким-то образом сгенерили ролик, в котором звука на пару секунд меньше чем видео
D:\testvideo>ffprobe Zatyk_2016_Med_wSound.mp4  2>&1 
ffprobe version N-72805-g913685f Copyright (c) 2007-2015 the FFmpeg developers
  built with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-a
visynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --en
able-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enab
le-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-lib
opencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus
 --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex -
-enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc
 --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-l
ibxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 36.100 / 56. 36.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Zatyk_2016_Med_wSound.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2016-03-18 10:17:11
  Duration: 00:04:39.92, start: 0.040000, bitrate: 98277 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 1920
x1080 [SAR 1:1 DAR 16:9], 98144 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2016-03-18 10:17:11
      handler_name    : ?Mainconcept Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 1
25 kb/s (default)
    Metadata:
      creation_time   : 2016-03-18 10:17:11
      handler_name    : #Mainconcept MP4 Sound Media Handler

D:\testvideo>ffmpeg -i Zatyk_2016_Med_wSound.mp4 -vf showinfo -af ashowinfo -f 
null - 2>&1 | tee shoinfo.txt 

D:\testvideo>type durations.awk 
BEGIN{ predicted_pts=0; prev_line=""; packets=0;}
/^\[Parsed_ashowinfo/{
 split($5, fields, ":");
 split($12, nsamples, ":");
 if(predicted_pts != fields[2]){
  errors++;
  printf("\nWRONG AUDIO PTS %s EXPECTED %s\nPREV %s\nNEXT %s\n",
 fields[2], predicted_pts, prev_line, $0);
 }
 predicted_pts = fields[2] + nsamples[2];
 prev_line = $0;
 packets++;
}
END{
 printf("TOTAL ERRORS %d FROM %d PACKETS", errors, packets);
}

D:\testvideo>gawk -f durations.awk shoinfo.txt

WRONG AUDIO PTS -896 EXPECTED 0
PREV 
NEXT [Parsed_ashowinfo_0 @ 00000000055c9e20] n:1 pts:-896 pts_time:-0.0186667
 pos:6535795 fmt:fltp channels:2 chlayout:stereo rate:48000 nb_samples:1024 c
hecksum:D0438638 plane_checksums: [ C8CCB70C 9BC9CF1D ]

WRONG AUDIO PTS 115840 EXPECTED 114816
PREV [Parsed_ashowinfo_0 @ 00000000055c9e20] n:113 pts:113792 pts_time:2.37067
 pos:43071767 fmt:fltp channels:2 chlayout:stereo rate:48000 nb_samples:1024 c
hecksum:04D0CDE0 plane_checksums: [ 1286E293 EDC5EB3E ]
NEXT [Parsed_ashowinfo_0 @ 00000000055c9e20] n:115 pts:115840 pts_time:2.41333
 pos:43072423 fmt:fltp channels:2 chlayout:stereo rate:48000 nb_samples:1024 c
hecksum:CBFF91F5 plane_checksums: [ 7D35C697 2494CB4F ]

WRONG AUDIO PTS 172160 EXPECTED 171136
PREV [Parsed_ashowinfo_0 @ 00000000055c9e20] n:168 pts:170112 pts_time:3.544 p
os:55740048 fmt:fltp channels:2 chlayout:stereo rate:48000 nb_samples:1024 che
cksum:E93BC4B1 plane_checksums: [ 1DF2032F D84CC182 ]
NEXT [Parsed_ashowinfo_0 @ 00000000055c9e20] n:170 pts:172160 pts_time:3.58667
 pos:61202104 fmt:fltp channels:2 chlayout:stereo rate:48000 nb_samples:1024 c
hecksum:9EF188CF plane_checksums: [ CB9EC3C7 ABB1C4F9 ]

ну и там дальше 136 таких ошибок на 13 тысяч пакетов. причем ффмпег каждый раз разное количество показывает. кто виноват - не понятно.