4Misc_Startr4Platformr@VersionCheckg@bThis experiment requires Igor Pro 8.00 or later because it has waves with long dimension labels. xHH@Rg(HHdh xHH@Rg(HHdh x HH@Rg(HHdh ^Graph*sWDashSettings#  ! -6Normal@ Lucida Console<HHHH$$4 4 4 4 4 4 }homeIAd_C:Projects:KeyValueStoreBenchmark:C:Projects:KeyValueStoreBenchmarkbRecentWindows.3D Graphics.ihfAdvanced Topics.ihfAnalysis of Functions.ihfAnalysis.ihfAnnotations.ihfCategory Plots.ihfCommands.ihfContour Plots.ihfControls.ihfGraph0:JSON,...Graph1_2:JsonReading,...;...json_functions.ipfMIES_PulseAveraging.ipfProgramming.ihfUsing Igor.ihfWhat's New In Igor Pro 8.ihf 4Misc_EndrXOPState_StartrBaslerCamera-64>^[AxonTelegraph64eStoreBenchmar:HDF5-64hfAnnotations.ihfpMIESUtils-64 8.ini.loMultiClamp700xCommander64:\NIDAQmx64Si8AkZeroMQ-64serSizesPeakFunctions2-64VISA64ogSizelogSiJSON-64yctccVDT2-64(404-4itcXOP2-644XOPState_Endr0L;IV_Flag?S_info)ProcGlobal#CodeBrowserModule#updatePanel;•HideTools/A !``lۍXresultWave<????s6>mڇcv>IjY>:-:>_>BF>9>Ew>EQ>A쇝G>Ct>5-9>z>6_5׾>Qv>Ï>T > ).>v*B>㑩u>'f>qx|>AfF>XR<`vŽ>,$>/?a>w$X ;>e>U>#517>p>3'>A*]J>>A Bp>h1=(>ړK>j'>H>Do]T> >Uֶ>ڛp>Ǧ #>@>TF>EI%>NU[> y]>Ē[>28>7>+طl>q g]>fY=>~>.">>C>P>">$wv> 3x>:>wF?j>mm>V>a>_Y>T>;)>i(ד>>QC>O$>5Fv>&hB>Wcp>=e>h2%>~}o>.k1#>6a>'/>n>iɩ>#@ 2>I~]>2 >Bv>>G-f>PO>[] A2>C>Iu>q 썩>REVp>>"uد>+>EDi>ET>/>B\+>~{>q>W~ή>ﶶI>䫗 >Q>r93R>P#>Z5>3o ¼>a>>>В<#>GO>Uz wb>)՛L)>ok>u>ڃ>}69~>pޗ-> C>&b|>E`W>0>s>oK>}1s>>F>^q˟>0>+Ϫ&>Q\><->nQ.>TW>> )>M5rJ>B3?4>X 63>=^;>V䞙7O>o>E?>*[φ>.>׆5>9ۇt>[>xI>͟.ܩ>Łͥ>>c>5z>m>.`>p_}>_FT3>5K>cRc>nZA>ʽ &>qѐb>P& >%~>/r>~>@\>Ki342>P>,J3z> BY>F> U!U>@n>(> R~Q>I>H m>ds%_!>U(>MdWi>*h> `+>V>Pۊ>eȍ> >AG>/S.>%å>|>>ʻs>£>ք>IJI>B^y>Zďl>^QA%>O`>qL>8v]>H>ݎȸ> \n>$E>=7>}^3>Bz_>vq>6}>HUv>c[>+ARZ>P>_B>Tӹ>1֧9 >]Z9$>: S>$qf>L<>mkJ>/ >)}&&>Zn>kꙸF>0>(—>m^>كn>Up>z>fD!>zFx>uC>Z{>[Zl>R)٬>#LK>&ci>[;>p>睷^?>XiQ> ~>I*JF>o*o.>5>ҊO>\7v>2- >oV3?>B>4ڒ>&1|>D>/>)wU j>5ps> >ڑ>˝L7a>1>VŧB4a>zj>J^wJ>R><\~x> i>l/>4B!J>;_w>vު>۠ >>wk>5P> $vc>ot->X|>]C>/>{>̂g>A!+>4ݍ>'>h[>r> =uG>~>_>:N>>}?+>|;k.>ЉC>|&]>n>WF>!uR>9>EԾ>:pOa>4K7>ɿ+>r&d>}pj>d>#=>y>b{>wuY?%Ѭ?t>I>顥>til>Yqzj[>)OO>%ҋ>7K>o(> g ? >[ د>e+> F֑>qzԵ>3w>z;!<>/^>v<>( ?H4rV>.> 5JJ> .w>ۺ>6 )ҕ>t룧>\p>!E?,m !>54諰>  >9]LS>c0x>N֢>еX>n4>;$?Xmx&?RgL>^#ȏ>X>6b>K ߊ>HD,>Zہ>}o>;) ?i?Yg >H8Գ>ЕyO*>@ǩ>?o>4Di>B#>6]l>AI?!?9oQ?:9:>cE!>dsA>fgZ>j-ؗu>ʹ&3>C\C$> ?!e.?K%? >W+Ҧ>6>>H>VV>3ʣ9n>r>߄?*?գ<?oU>% q>3z'>8^q>+܁a?Uд J>w•v>S|?z 0?YH&?z> x>;c">;ۓ>?t^Lu>F9Z >Q?2͍L4?x^ ?& 4>0>\>>U>Gǥ.>|+<?,[*t>/5>!?3<'9?mKh?ثv>/OM_>X;1>>6`>|Z U? >[>4‘]&?~' C?Y3Q?3>a7k>> >t?^Q>..å?)\DQb>E=P>{-?Vfϝ|D?6\<?`>81w-@>@>V>.}?y>gɩ>3?~eJ#J?E'?->VlN>sl> B>>N1jL"?f# >!>?->?#qBQ?6kF7?!ǔ>u5>5>\+>1Dz'?k9>Z;>UJ@?;wV?7U:?}TP>1a>^>cJ>}(,?<9}J>E0>TF?֡`"[?PӯA?&C>"G4H >ĵg}>:Z>.,2?)q> r>P?v`?9oJG? n>w:<>"?P>(٠<>*T-Z7?D?w>gD'S>jgF;T?LGfoe?M?h> > p>$6>eD>?i#z>CW>7/[?ov9k?< ZU?Tb>k9? .x>at>!E>V8+C?ȫ>|>}A0c?hp~q?x8vY?4t>B%XF>3>+7w>^&tG?+)>cWb> Fi?hQ#v?-0`?1M>>' X>]cy>- M??=!>}->? zPp?qZljk}?wSd?MK>xD>4 4v>eP>ltR??QL>#8GG>E#Vu?0D<͂?wh?1>ҙ+>q}>Uz>AbRW?pNaL>TF+ >ėhTz?]&+V?&\Ao?,6A/7s>65j>.e$>Ed>C٫u]?zQ>q>.qT?&&L[?s?jw>:>gL>JXVbL>0cb?O >"z}>2f}υ?3 3?H%x?2=>2I,>'QljDG>i>%{kg?pc(t>JSONTextwaveStringByKeyDimLabelWaveReadingWriting = @xۍ,resultWaveSummed<????l>{>>Q~>Цq w>o");>H/>0j>j>Di7)m>2Bgڃ>+d>[>bs(`>5>`Ϲ>~L>F ƺT>'>m#>(>،a>fi>$>%>ncs>u.N>!G >9W>> y>3=aHU>;F£>Ж>3>>h().>ZTM j>D-W>WDr;> Lט>OK5>$?P>j>eZoo>Z>oֿ"n>^)>m>bp>)\>.prs>Z/JZ>LXB>HEp>5`{>T>s)T7i>bҘ>tRk>w1l`>BZ&m>$~>y^>(i->7>t>t7WE>ח=>H{W=> a>!?D>N>|8C3y>ڴf>,} >s%c,>M{(>;1>0EW@p>ȏ_3>`2>sbF>>c>[".ޔ>|P<~>Nʾ4>x>DGy>>)>I>Rw>!nA>+<>;>ҧ|Ճ>Nq>xTj>){> >$X>5 eȥ>.?VԂ>CH>>$! x>+>¶Z>O]>q>h>ښZ^>e>ioʤ>'>Pm\>x)>CJ꟟(>BcIr>CV3T>`'S>↓pN>ۨZ=>X7> 'C;>B]><&>g >L` >~i!>m >a0^'>U(>1kjn>|T>6B7Oy>=UL>ꅘ>o7J>Kxf>R7w>f>N<87>;{Q>(>d~>gG>04X>Gu@>C>POC>WH{d>&c4-&>w;>2C> ;p>n7b{?Dzo>ٷ&5>hRip>oo<>$?h%>Glc>_>K?{+?H7i>#T> >ݯ@nc>J8 ?ddT>vcR>a-v>Qb-R>~ī,I?2bC'>'>t>0iW>(7֞? 3>78? U> Sd>>?%}T?WL>K_ԓH>T1Z>qX<?ل,?::T?0>V}>0?h]"?ne[ ?7E#>^z>Ο?;bSP&?0 ?. >tX5h>e CA?à+??b>>yn? Η0??xa>,S>?OdH4?D@`s?$>4\`$>i|!? E:?^!?7Ϭ>T&>:+&?;ʒM?C?:Drn{&?{AC>ݧK4>-.?{B{D?x} m-?XT>@1%c>P 3?;VJ?l4?P>_Ƒ >~^>?%n[Q? A?j{>g$>HYc@?b|a>nG?pZ[?ˇiK?U\|>t@.>FBP?{4`?,Q?a(f>[eE>q BT?X^TJ|e? BbV?8Jd>F\|z>hi[?ZJk?w<^?>]b<>sT>=fB7c?XgЍq??oeb?Wϛ>`Tl>(;:0i?@^v?;Zg? EC>FF:D> Ap?ʛ }?̈́!m?->j^->T_?Yu?VRЂ?ODnT)r?=e>N!}>e=xz?Y?~wR=w?>ސ q4> p8BV?/jqd?50;}?QcƐ>ᕃu> х??a؎4?-vqf2?솹|>JSONTextwaveStringByKeyDimLabelWaveReading  Packages!6  ResizeControlsPanel!?7~0L;IIndicatorWindowName<8+$*  گ :EditorTextWaver????SF_InfoTabSettingsbutton_BrowserSettings_Exportbutton_Calculation_RestoreDatabutton_RemoveRangesbutton_TimeAlignment_Actionbutton_sweepFormula_checkbutton_sweepFormula_displaycheck_BrowserSettings_ADCcheck_BrowserSettings_ARcheck_BrowserSettings_DACcheck_BrowserSettings_DB_Failedcheck_BrowserSettings_DB_Passedcheck_BrowserSettings_OChancheck_BrowserSettings_OVScheck_BrowserSettings_PAcheck_BrowserSettings_SFcheck_BrowserSettings_TAcheck_BrowserSettings_TTLcheck_BrowserSettings_dDAQcheck_BrowserSettings_splitTTLcheck_Calculation_AverageTracescheck_Calculation_ZeroTracescheck_Display_EqualYignorecheck_Display_EqualYrangecheck_Display_VisibleXrangecheck_SweepControl_HideSweepcheck_auto_removecheck_channelSel_AD_0check_channelSel_AD_1check_channelSel_AD_10check_channelSel_AD_11check_channelSel_AD_12check_channelSel_AD_13check_channelSel_AD_14check_channelSel_AD_15check_channelSel_AD_2check_channelSel_AD_3check_channelSel_AD_4check_channelSel_AD_5check_channelSel_AD_6check_channelSel_AD_7check_channelSel_AD_8check_channelSel_AD_9check_channelSel_AD_Allcheck_channelSel_DA_0check_channelSel_DA_1check_channelSel_DA_2check_channelSel_DA_3check_channelSel_DA_4check_channelSel_DA_5check_channelSel_DA_6check_channelSel_DA_7check_channelSel_DA_Allcheck_channelSel_HEADSTAGE_0check_channelSel_HEADSTAGE_1check_channelSel_HEADSTAGE_2check_channelSel_HEADSTAGE_3check_channelSel_HEADSTAGE_4check_channelSel_HEADSTAGE_5check_channelSel_HEADSTAGE_6check_channelSel_HEADSTAGE_7check_channelSel_HEADSTAGE_ALLcheck_headstage_axis_labelcheck_highlightRangescheck_overlaySweeps_disableHScheck_overlaySweeps_non_commulacheck_ovs_clear_on_new_ra_cyclecheck_ovs_clear_on_new_stimset_cyclecheck_pulseAver_deconvcheck_pulseAver_indTracescheck_pulseAver_multGraphscheck_pulseAver_showAvercheck_pulseAver_timeAligncheck_pulseAver_zeroTracgroup_SB_axes_scalinggroup_calcgroup_channelSel_ADgroup_channelSel_DAgroup_channelSel_HEADSTAGEgroup_enable_artifactgroup_enable_channelsgroup_enable_dashboardgroup_enable_pulsegroup_enable_sweepFormulagroup_enable_sweepsgroup_properties_artefactgroup_properties_pulsegroup_properties_sweepFormulagroup_properties_sweepsgroup_pulseAver_deconvgroup_timealignmentlist_dashboardlist_of_rangeslist_of_ranges1popup_DB_lockedDevicespopup_TimeAlignment_Masterpopup_TimeAlignment_Modepopup_overlaySweeps_selectsetvar_Display_EqualYlevelsetvar_TimeAlignment_LevelCrosssetvar_cutoff_length_aftersetvar_cutoff_length_beforesetvar_overlaySweeps_offsetsetvar_overlaySweeps_stepsetvar_pulseAver_deconv_rangesetvar_pulseAver_deconv_smthsetvar_pulseAver_deconv_tausetvar_pulseAver_endPulsesetvar_pulseAver_fallbackLengthsetvar_pulseAver_startPulsesetvar_sweepFormula_parseResultslider_BrowserSettings_dDAQstatus_sweepFormula_parserLeft\W623\JRLeft\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRLeft\W623\JRLeft\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRLeft\W623\JRMiddle\W623\JRLeft\W623\JRMiddle\W623\JRLeft\W623\JRLeft\W623\JRLeft\W623\JRMiddle\W623\JRLeft\W623\JRLeft\W623\JRMiddle\W623\JRMiddle\W623\JRLeft\W623\JRLeft\W623\JRLeft\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRMiddle\W623\JRLeft\W623\JRMiddle\W623\JRRight\W623\JRRight\W623\JRRight\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRLeft\W623\JRLeft\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRRight\W623\JRSame Width\W623\JRRight\W623\JRSame Width\W623\JRRight\W623\JRRight\W623\JRRight\W623\JRSame Width\W623\JRRight\W623\JRRight\W623\JRSame Width\W623\JRSame Width\W623\JRRight\W623\JRRight\W623\JRRight\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRSame Width\W623\JRLeft\W623\JRSame Width\W623\JRRight\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRBottom\W623\JRBottom\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRGuide enableBoxTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRGuide enableBoxTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRGuide MainBoxTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRBottom\W623\JRTop\W623\JRBottom\W623\JRBottom\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRBottom\W623\JRBottom\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRGuide enableBoxBottom\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRGuide enableBoxBottom\W623\JRTop\W623\JRBottom\W623\JRTop\W623\JRGuide MainBoxBottom\W623\JRBottom\W623\JRTop\W623\JRTop\W623\JRBottom\W623\JRBottom\W623\JRBottom\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRTop\W623\JRBottom\W623\JRTop\W623\JRBottom\W623\JRSF_InfoTabSettingsbutton_BrowserSettings_Exportbutton_Calculation_RestoreDatabutton_RemoveRangesbutton_TimeAlignment_Actionbutton_sweepFormula_checkbutton_sweepFormula_displaycheck_BrowserSettings_ADCcheck_BrowserSettings_ARcheck_BrowserSettings_DACcheck_BrowserSettings_DB_Failedcheck_BrowserSettings_DB_Passedcheck_BrowserSettings_OChancheck_BrowserSettings_OVScheck_BrowserSettings_PAcheck_BrowserSettings_SFcheck_BrowserSettings_TAcheck_BrowserSettings_TTLcheck_BrowserSettings_dDAQcheck_BrowserSettings_splitTTLcheck_Calculation_AverageTracescheck_Calculation_ZeroTracescheck_Display_EqualYignorecheck_Display_EqualYrangecheck_Display_VisibleXrangecheck_SweepControl_HideSweepcheck_auto_removecheck_channelSel_AD_0check_channelSel_AD_1check_channelSel_AD_10check_channelSel_AD_11check_channelSel_AD_12check_channelSel_AD_13check_channelSel_AD_14check_channelSel_AD_15check_channelSel_AD_2check_channelSel_AD_3check_channelSel_AD_4check_channelSel_AD_5check_channelSel_AD_6check_channelSel_AD_7check_channelSel_AD_8check_channelSel_AD_9check_channelSel_AD_Allcheck_channelSel_DA_0check_channelSel_DA_1check_channelSel_DA_2check_channelSel_DA_3check_channelSel_DA_4check_channelSel_DA_5check_channelSel_DA_6check_channelSel_DA_7check_channelSel_DA_Allcheck_channelSel_HEADSTAGE_0check_channelSel_HEADSTAGE_1check_channelSel_HEADSTAGE_2check_channelSel_HEADSTAGE_3check_channelSel_HEADSTAGE_4check_channelSel_HEADSTAGE_5check_channelSel_HEADSTAGE_6check_channelSel_HEADSTAGE_7check_channelSel_HEADSTAGE_ALLcheck_headstage_axis_labelcheck_highlightRangescheck_overlaySweeps_disableHScheck_overlaySweeps_non_commulacheck_ovs_clear_on_new_ra_cyclecheck_ovs_clear_on_new_stimset_cyclecheck_pulseAver_deconvcheck_pulseAver_indTracescheck_pulseAver_multGraphscheck_pulseAver_showAvercheck_pulseAver_timeAligncheck_pulseAver_zeroTracgroup_SB_axes_scalinggroup_calcgroup_channelSel_ADgroup_channelSel_DAgroup_channelSel_HEADSTAGEgroup_enable_artifactgroup_enable_channelsgroup_enable_dashboardgroup_enable_pulsegroup_enable_sweepFormulagroup_enable_sweepsgroup_properties_artefactgroup_properties_pulsegroup_properties_sweepFormulagroup_properties_sweepsgroup_pulseAver_deconvgroup_timealignmentlist_dashboardlist_of_rangeslist_of_ranges1popup_DB_lockedDevicespopup_TimeAlignment_Masterpopup_TimeAlignment_Modepopup_overlaySweeps_selectsetvar_Display_EqualYlevelsetvar_TimeAlignment_LevelCrosssetvar_cutoff_length_aftersetvar_cutoff_length_beforesetvar_overlaySweeps_offsetsetvar_overlaySweeps_stepsetvar_pulseAver_deconv_rangesetvar_pulseAver_deconv_smthsetvar_pulseAver_deconv_tausetvar_pulseAver_endPulsesetvar_pulseAver_fallbackLengthsetvar_pulseAver_startPulsesetvar_sweepFormula_parseResultslider_BrowserSettings_dDAQstatus_sweepFormula_parsernameleftrighttopbottom /M`{7Rk#?Yr&<Rh}'<Qf{:Vr0On $9CVi0Mdz  4 S m  ) H c    - ; I W e s  ) 7 E S a o }  % 3 A O ] k y !/=KYgu)5CO[gu!/=KYgu$6BN`r&8J\n"4FXj| 0BTfx,>Pbt(:L^k} -:L^p$6HZfx%0;U`kv&1<GR]hs~ #.9DOZep{  +6P[fq #.9DOZep{$/:EP[x(3>IT_ju   % 0 ; F Q \ g r } ! !!"!-!8!C!N!Y!v!!!!!!!!!!"""$"/":"E"P"["f"q"|"""""""""EditorTextWave^(mu گ EditorTitleWave????ControlLeft EdgeRight EdgeTop EdgeBottom Edge"-( *  r :EditorSelWaver?????SF_InfoTabSettingsbutton_BrowserSettings_Exportbutton_Calculation_RestoreDatabutton_RemoveRangesbutton_TimeAlignment_Actionbutton_sweepFormula_checkbutton_sweepFormula_displaycheck_BrowserSettings_ADCcheck_BrowserSettings_ARcheck_BrowserSettings_DACcheck_BrowserSettings_DB_Failedcheck_BrowserSettings_DB_Passedcheck_BrowserSettings_OChancheck_BrowserSettings_OVScheck_BrowserSettings_PAcheck_BrowserSettings_SFcheck_BrowserSettings_TAcheck_BrowserSettings_TTLcheck_BrowserSettings_dDAQcheck_BrowserSettings_splitTTLcheck_Calculation_AverageTracescheck_Calculation_ZeroTracescheck_Display_EqualYignorecheck_Display_EqualYrangecheck_Display_VisibleXrangecheck_SweepControl_HideSweepcheck_auto_removecheck_channelSel_AD_0check_channelSel_AD_1check_channelSel_AD_10check_channelSel_AD_11check_channelSel_AD_12check_channelSel_AD_13check_channelSel_AD_14check_channelSel_AD_15check_channelSel_AD_2check_channelSel_AD_3check_channelSel_AD_4check_channelSel_AD_5check_channelSel_AD_6check_channelSel_AD_7check_channelSel_AD_8check_channelSel_AD_9check_channelSel_AD_Allcheck_channelSel_DA_0check_channelSel_DA_1check_channelSel_DA_2check_channelSel_DA_3check_channelSel_DA_4check_channelSel_DA_5check_channelSel_DA_6check_channelSel_DA_7check_channelSel_DA_Allcheck_channelSel_HEADSTAGE_0check_channelSel_HEADSTAGE_1check_channelSel_HEADSTAGE_2check_channelSel_HEADSTAGE_3check_channelSel_HEADSTAGE_4check_channelSel_HEADSTAGE_5check_channelSel_HEADSTAGE_6check_channelSel_HEADSTAGE_7check_channelSel_HEADSTAGE_ALLcheck_headstage_axis_labelcheck_highlightRangescheck_overlaySweeps_disableHScheck_overlaySweeps_non_commulacheck_ovs_clear_on_new_ra_cyclecheck_ovs_clear_on_new_stimset_cyclecheck_pulseAver_deconvcheck_pulseAver_indTracescheck_pulseAver_multGraphscheck_pulseAver_showAvercheck_pulseAver_timeAligncheck_pulseAver_zeroTracgroup_SB_axes_scalinggroup_calcgroup_channelSel_ADgroup_channelSel_DAgroup_channelSel_HEADSTAGEgroup_enable_artifactgroup_enable_channelsgroup_enable_dashboardgroup_enable_pulsegroup_enable_sweepFormulagroup_enable_sweepsgroup_properties_artefactgroup_properties_pulsegroup_properties_sweepFormulagroup_properties_sweepsgroup_pulseAver_deconvgroup_timealignmentlist_dashboardlist_of_rangeslist_of_ranges1popup_DB_lockedDevicespopup_TimeAlignment_Masterpopup_TimeAlignment_Modepopup_overlaySweeps_selectsetvar_Display_EqualYlevelsetvar_TimeAlignment_LevelCrosssetvar_cutoff_length_aftersetvar_cutoff_length_beforesetvar_overlaySweeps_offsetsetvar_overlaySweeps_stepsetvar_pulseAver_deconv_rangesetvar_pulseAver_deconv_smthsetvar_pulseAver_deconv_tausetvar_pulseAver_endPulsesetvar_pulseAver_fallbackLengthsetvar_pulseAver_startPulsesetvar_sweepFormula_parseResultslider_BrowserSettings_dDAQstatus_sweepFormula_parsernameleftrighttopbottomEditorSelWave  WindowCoordinates!`7^v@$ W_windowCoordinates ????ResizeControlsPanel90697.251778.2485.757296872.25388.5windowNamelefttoprightbottompanelResscreenReswidthPointsheightPoints!')+16  KBColorize!6 0L;IgStartingHuegLinearHuegSaturation?gLightness?gAllMarkersMenuItem4@gUniqueMarkersMenuItem?gAllLineStylesMenuItem?gPopRedgPopGreengPopBluegColorTableNamedBZ14 } y" y",PhueRGBImaged{Gz????Һxx``BBHHNNTTZZ``llrrxx****006666<hf y" y" hueTicks ????=L>>>??333?L?fff?@(g y" y" hueTickLabels ????p y" y",PsatRGBImaged????ĠʡТ֣ܤ  &,28?EKQW]cjpv|”Ûġŧƭdzȹɿ "(.4:@GMSY_ekrx~n%numllfkjjWihgGgfe8edc(cybaai`_ _Z^]\K\[Z;ZYX,X|WVVmUT T^SRQNQPO?ONM/MLK KpJIIaHGGQFEDBDCB3BA@#@t?>>d=<q=k 8 1+% ?k y" y",PlightRGBImaged????ffim&qtRx{|<ҍh(T~>Ըj*Vр٬@l,Xt :h-[!O}Cq6 d!!"*##X$$%&&K''z())*-0369<C o/ X$'+/2D69q=AD1HK[ORVZ]Gadshlo2sv]z}Iߏu 5ˡ^!Jw  7 *// Platform=WindowsNT, IGORVersion=8.050, architecture=Intel, systemTextEncoding="Windows-1252", historyTextEncoding="UTF-8", procwinTextEncoding="UTF-8", recreationTextEncoding="UTF-8", build=36002 #pragma TextEncoding = "UTF-8" Silent 101 // use | as bitwise or -- not comment. if (IgorVersion() < 8.00) *** This experiment requires Igor Pro 8.00 or later because it has waves with long dimension labels *** endif DefaultFont "Arial" Execute/P/Q/Z SelectString(NumberByKey("IGORVERS", IgorInfo(0)) >= 5, "", "COMPILEPROCEDURES ") Execute/Q/Z SelectString(NumberByKey("IGORVERS", IgorInfo(0)) >= 5, "", "SetIgorHook AfterCompiledHook=ProcGlobal#CodeBrowserModule#updatePanel") MoveWindow/C 11.25,1021.25,899.25,1523.75 Graph0() MoveWindow/P 965.25,44.75,1745.25,1449.5 Graph1_2() KillStrings/Z root:gWMSetNextTextFilesTextEncoding Window Graph1_2() : Graph PauseUpdate; Silent 1 // building window... Display /W=(3,547.25,773.25,1031) resultWave[%JSON][%Reading][*]/TN=JsonReading,resultWave[%dimlabel][%Reading][*]/TN=DimLabelReading AppendToGraph resultWave[%textwave][%Reading][*]/TN=TextWaveReading,resultWave[%stringByKey][%Reading][*]/TN=StringByKeyReading AppendToGraph resultWave[%wave][%Reading][*]/TN=WaveReading,resultWave[%JSON][%Writing][*]/TN=JsonWriting AppendToGraph resultWave[%dimlabel][%Writing][*]/TN=DimLabelWriting,resultWave[%textwave][%Writing][*]/TN=TextWaveWriting AppendToGraph resultWave[%stringByKey][%Writing][*]/TN=StringByKeyWriting,resultWave[%wave][%Writing][*]/TN=WaveWriting ModifyGraph mode=4 ModifyGraph marker(JsonReading)=8,marker(DimLabelReading)=8,marker(TextWaveReading)=8 ModifyGraph marker(StringByKeyReading)=8,marker(WaveReading)=8,marker(JsonWriting)=16 ModifyGraph marker(DimLabelWriting)=16,marker(TextWaveWriting)=16,marker(StringByKeyWriting)=16 ModifyGraph marker(WaveWriting)=16 ModifyGraph lSize=1.5 ModifyGraph rgb(JsonReading)=(0,0,0),rgb(DimLabelReading)=(39321,1,31457),rgb(TextWaveReading)=(2,39321,1) ModifyGraph rgb(StringByKeyReading)=(65535,32764,16385),rgb(WaveReading)=(0,0,65535) ModifyGraph rgb(JsonWriting)=(0,0,0),rgb(DimLabelWriting)=(39321,1,31457),rgb(TextWaveWriting)=(2,39321,1) ModifyGraph rgb(StringByKeyWriting)=(65535,32764,16385),rgb(WaveWriting)=(0,0,65535) ModifyGraph msize(JsonReading)=3,msize(DimLabelReading)=3,msize(TextWaveReading)=3 ModifyGraph msize(StringByKeyReading)=3,msize(WaveReading)=3,msize(JsonWriting)=2 ModifyGraph msize(DimLabelWriting)=2,msize(TextWaveWriting)=2,msize(StringByKeyWriting)=2 ModifyGraph msize(WaveWriting)=2 ModifyGraph mrkThick(JsonReading)=1.2,mrkThick(DimLabelReading)=1.2,mrkThick(TextWaveReading)=1.2 ModifyGraph mrkThick(StringByKeyReading)=1.2,mrkThick(WaveReading)=1.2,mrkThick(JsonWriting)=1 ModifyGraph mrkThick(DimLabelWriting)=1,mrkThick(TextWaveWriting)=1,mrkThick(StringByKeyWriting)=1 ModifyGraph mrkThick(WaveWriting)=1 ModifyGraph grid(left)=1 ModifyGraph log(left)=1 ModifyGraph minor(bottom)=1 ModifyGraph fSize=18 ModifyGraph lblMargin(left)=10 ModifyGraph lblLatPos(left)=3 Label left "\\Z18Execution time in [s]" Label bottom "\\Z18data size, 10\\Sx\\M elements" Legend/C/N=text0/J/A=MC/X=-30.58/Y=40.81 "\\Z18\\Zr075\rDimension Label\\[0 \\s(DimLabelReading) Read \\s(DimLabelWriting) Write" AppendText "JSON\\X0 \\s(JsonReading) Read \\s(JsonWriting) Write\nTextwave\\X0 \\s(TextWaveReading) Read \\s(TextWaveWriting) Write" AppendText "\nStringByKey\\X0 \\s(StringByKeyReading) Read \\s(StringByKeyWriting) Write\r\nWave\\X0 \\s(WaveReading) Read \\s(WaveWriting) Write" TextBox/C/N=text1/A=MC/X=-9.64/Y=147.84 "Time of one read/write operation" TextBox/C/N=text2/A=MC/X=11.55/Y=47.79 "\\Z18Time of one read/write operation" EndMacro Window Graph0() : Graph PauseUpdate; Silent 1 // building window... Display /W=(4.5,40.25,775.5,524) resultWaveSummed[%JSON][0][*]/TN=JSON,resultWaveSummed[%DimLabel][0][*]/TN=DimLabel AppendToGraph resultWaveSummed[%StringByKey][0][*]/TN=StringByKey,resultWaveSummed[%TExtwave][0][*]/TN=TextWave AppendToGraph resultWaveSummed[%wave][0][*]/TN=Wave ModifyGraph mode=4 ModifyGraph marker=55 ModifyGraph lSize=1.5 ModifyGraph rgb(JSON)=(0,0,0),rgb(DimLabel)=(39321,1,31457),rgb(StringByKey)=(65535,32764,16385) ModifyGraph rgb(TextWave)=(2,39321,1),rgb(Wave)=(0,0,65535) ModifyGraph msize=2 ModifyGraph grid(left)=1 ModifyGraph log(left)=1 ModifyGraph minor(bottom)=1 ModifyGraph fSize=18 Label left "\\Z18Execution time in [s]" Label bottom "\\Z18data size, 10\\Sx\\M elements" Legend/C/N=text0/J/A=MC/X=-37.94/Y=39.69 "\\Z18\\Zr075Dimension Label\\[0 \\s(DimLabel)\rJSON\\X0 \\s(JSON)\rTextWave\\X0 \\s(TextWave) " AppendText "\nStringByKey\\X0 \\s(StringByKey) \rWave\\X0 \\s(Wave) " TextBox/C/N=text1/A=MC/X=3.63/Y=47.01 "\\Z18Combined time of one write and read operation" EndMacro b!#pragma TextEncoding = "UTF-8" #pragma rtGlobals=3 // Use modern global access method and strict wave access. #pragma rtFunctionErrors=1 #include "json_functions" // Key Value Store benchmark // // requires free JSON XOP from https://docs.byte-physics.de/json-xop/ constant ROWS = 0 constant COLS = 1 Menu "Run Benchmark" "Start Benchmark", /Q, Bench() End Function IntNoise(from, to) Variable from, to Variable amp = to - from return floor(from + mod(abs(enoise(100 * amp)), amp + 1)) End Function Bench() variable NUM_RUNS_READ = 10000 variable NUM_RUNS_WRITE = 10000 variable numExponentials = 6 variable expStep = 10 variable size variable ref, i, j, idx, jsonID, e, elapsed string output, name, str, result variable numRunsWrite Make/O/D/N=(5, 2, numExponentials * expStep) resultWave resultWave = NaN SetScale/P z, 0, 1 / expStep, "", resultWave SetDimLabel 0, 0, JSON, resultWave SetDimLabel 0, 1, Textwave, resultWave SetDimLabel 0, 2, StringByKey, resultWave SetDimLabel 0, 3, DimLabel, resultWave SetDimLabel 0, 4, Wave, resultWave SetDimLabel 1, 0, Reading, resultWave SetDimLabel 1, 1, Writing, resultWave Execute/Q "Graph0()" Execute/Q "Graph1_2()" // name is the key and num2str(index) is the value for(e = 0; e < numExponentials * expStep; e += 1) size = trunc(10^(e / expStep)) if(e > 25) NUM_RUNS_READ = 1000 NUM_RUNS_WRITE = 1000 endif if(e > 40) NUM_RUNS_READ = 100 NUM_RUNS_WRITE = 100 endif if(size < NUM_RUNS_WRITE) numRunsWrite = NUM_RUNS_WRITE else numRunsWrite = 1 endif SetRandomSeed 1 Make/N=(NUM_RUNS_READ)/O indizes = IntNoise(0, size - 1) jsonID = JSON_New() ref = stopmSTimer(-2) for(i = 0; i < numRunsWrite; i += 1) for(j = 0; j < size; j += 1) name = "abcd" + num2str(j) JSON_SetString(jsonID, "/" + name, num2str(j)) endfor endfor elapsed = (stopmSTimer(-2) - ref)/1e6/numRunsWrite/size resultWave[%JSON][%Writing][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < NUM_RUNS_READ; i += 1) name = "abcd" + num2str(indizes[i]) output = JSON_GetString(jsonID, "/" + name) endfor elapsed = (stopmSTimer(-2) - ref)/1e6/NUM_RUNS_READ resultWave[%JSON][%Reading][e] = elapsed JSON_Release(jsonID) Make/FREE/T/N=(size) tw ref = stopmSTimer(-2) for(i = 0; i < numRunsWrite; i += 1) for(j = 0; j < size; j += 1) name = "abcd" + num2str(j) tw[j] = name endfor endfor elapsed = (stopmSTimer(-2) - ref)/1e6/numRunsWrite/size resultWave[%TextWave][%Writing][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < NUM_RUNS_READ; i += 1) name = "abcd" + num2str(indizes[i]) FindValue/TEXT=(name)/TXOP=4/UOFV tw output = num2str(V_Value) endfor elapsed = (stopmSTimer(-2) - ref)/1e6/NUM_RUNS_READ resultWave[%TextWave][%Reading][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < numRunsWrite; i += 1) str = PadString("", size * 20, 0) for(j = 0; j < size; j += 1) name = "abcd" + num2str(j) str += name + ":" + num2str(j) + ";" endfor endfor elapsed = (stopmSTimer(-2) - ref)/1e6/numRunsWrite/size resultWave[%StringByKey][%Writing][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < NUM_RUNS_READ; i += 1) name = "abcd" + num2str(indizes[i]) result = StringbyKey(name, str) endfor elapsed = (stopmSTimer(-2) - ref)/1e6/NUM_RUNS_READ resultWave[%StringByKey][%Reading][e] = elapsed Make/n=(size)/FREE/T dimlabels ref = stopmSTimer(-2) for(i = 0; i < numRunsWrite; i += 1) for(j = 0; j < size; j += 1) name = "abcd" + num2str(j) SetdimLabel ROWS, j, $name, dimlabels dimlabels[j] = num2str(j) endfor endfor elapsed = (stopmSTimer(-2) - ref)/1e6/numRunsWrite/size resultWave[%DimLabel][%Writing][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < NUM_RUNS_READ; i += 1) name = "abcd" + num2str(indizes[i]) result = dimlabels[%$name] endfor elapsed = (stopmSTimer(-2) - ref)/1e6/NUM_RUNS_READ resultWave[%DimLabel][%Reading][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < numRunsWrite; i += 1) DFREF dfr = NewFreeDataFolder() for(j = 0; j < size; j += 1) name = "abcd" + num2istr(j) Make/T/N=1 dfr:$name/WAVE=wv wv[0] = num2istr(j) endfor endfor elapsed = (stopmSTimer(-2) - ref)/1e6/numRunsWrite/size resultWave[%Wave][%Writing][e] = elapsed ref = stopmSTimer(-2) for(i = 0; i < NUM_RUNS_READ; i += 1) name = "abcd" + num2istr(indizes[i]) WAVE/SDFR=dfr/T wv = $name result = wv[0] endfor elapsed = (stopmSTimer(-2) - ref)/1e6/NUM_RUNS_READ resultWave[%Wave][%Reading][e] = elapsed DoUpdate endfor Duplicate/O resultWave, resultWaveSummed resultWaveSummed[][0][] = resultWaveSummed[p][0][r] + resultWaveSummed[p][1][r] Redimension/N=(-1, 1, -1) resultWaveSummed End Window Graph0() : Graph PauseUpdate; Silent 1 // building window... Display /W=(255,60.5,1026,544.25) resultWaveSummed[%JSON][0][*]/TN=JSON,resultWaveSummed[%DimLabel][0][*]/TN=DimLabel AppendToGraph resultWaveSummed[%StringByKey][0][*]/TN=StringByKey,resultWaveSummed[%TExtwave][0][*]/TN=TextWave AppendToGraph resultWaveSummed[%wave][0][*]/TN=Wave ModifyGraph mode=4 ModifyGraph marker=55 ModifyGraph lSize=1.5 ModifyGraph rgb(JSON)=(0,0,0),rgb(DimLabel)=(39321,1,31457),rgb(StringByKey)=(65535,32764,16385) ModifyGraph rgb(TextWave)=(2,39321,1),rgb(Wave)=(0,0,65535) ModifyGraph msize=2 ModifyGraph grid(left)=1 ModifyGraph log(left)=1 ModifyGraph minor(bottom)=1 ModifyGraph fSize=18 Label left "\\Z18Execution time in [s]" Label bottom "\\Z18data size, 10\\Sx\\M elements" Legend/C/N=text0/J/A=MC/X=-37.94/Y=39.69 "\\Z18\\Zr075Dimension Label\\[0 \\s(DimLabel)\rJSON\\X0 \\s(JSON)\rTextWave\\X0 \\s(TextWave) " AppendText "\nStringByKey\\X0 \\s(StringByKey) \rWave\\X0 \\s(Wave) " TextBox/C/N=text1/A=MC/X=3.63/Y=47.01 "\\Z18Combined time of one write and read operation" EndMacro Window Graph1_2() : Graph PauseUpdate; Silent 1 // building window... Display /W=(70.5,601.25,840.75,1085) resultWave[%JSON][%Reading][*]/TN=JsonReading AppendToGraph resultWave[%dimlabel][%Reading][*]/TN=DimLabelReading,resultWave[%textwave][%Reading][*]/TN=TextWaveReading AppendToGraph resultWave[%stringByKey][%Reading][*]/TN=StringByKeyReading,resultWave[%wave][%Reading][*]/TN=WaveReading AppendToGraph resultWave[%JSON][%Writing][*]/TN=JsonWriting,resultWave[%dimlabel][%Writing][*]/TN=DimLabelWriting AppendToGraph resultWave[%textwave][%Writing][*]/TN=TextWaveWriting,resultWave[%stringByKey][%Writing][*]/TN=StringByKeyWriting AppendToGraph resultWave[%wave][%Writing][*]/TN=WaveWriting ModifyGraph mode=4 ModifyGraph marker(JsonReading)=19,marker(DimLabelReading)=19,marker(TextWaveReading)=19 ModifyGraph marker(StringByKeyReading)=19,marker(WaveReading)=19,marker(JsonWriting)=16 ModifyGraph marker(DimLabelWriting)=16,marker(TextWaveWriting)=16,marker(StringByKeyWriting)=16 ModifyGraph marker(WaveWriting)=16 ModifyGraph lSize=1.5 ModifyGraph rgb(JsonReading)=(0,0,0),rgb(DimLabelReading)=(39321,1,31457),rgb(TextWaveReading)=(2,39321,1) ModifyGraph rgb(StringByKeyReading)=(65535,32764,16385),rgb(WaveReading)=(0,0,65535) ModifyGraph rgb(JsonWriting)=(0,0,0),rgb(DimLabelWriting)=(39321,1,31457),rgb(TextWaveWriting)=(2,39321,1) ModifyGraph rgb(StringByKeyWriting)=(65535,32764,16385),rgb(WaveWriting)=(0,0,65535) ModifyGraph msize=2 ModifyGraph mrkThick=1 ModifyGraph grid(left)=1 ModifyGraph log(left)=1 ModifyGraph minor(bottom)=1 ModifyGraph fSize=18 ModifyGraph lblMargin(left)=10 ModifyGraph lblLatPos(left)=3 Label left "\\Z18Execution time in [s]" Label bottom "\\Z18data size, 10\\Sx\\M elements" Legend/C/N=text0/J/A=MC/X=-30.58/Y=40.81 "\\Z18\\Zr075\rDimension Label\\[0 \\s(DimLabelReading) Read \\s(DimLabelWriting) Write" AppendText "JSON\\X0 \\s(JsonReading) Read \\s(JsonWriting) Write\nTextwave\\X0 \\s(TextWaveReading) Read \\s(TextWaveWriting) Write" AppendText "\nStringByKey\\X0 \\s(StringByKeyReading) Read \\s(StringByKeyWriting) Write\r\nWave\\X0 \\s(WaveReading) Read \\s(WaveWriting) Write" TextBox/C/N=text1/A=MC/X=-9.64/Y=147.84 "Time of one read/write operation" TextBox/C/N=text2/A=MC/X=11.55/Y=47.79 "\\Z18Time of one read/write operation" EndMacro