Вверх ↑
Ответов: 824
Рейтинг: 138
#1: 2014-10-03 22:24:18 ЛС | профиль | цитата
Выше, я, упоминал про возможность использовать в качестве ассоциативного массива на основе Type:
code_34388.txt

А теперь о скорости:
Для теста взял метод извлечения по индексу из StrList и извлечение по имени из Типа.
Из времени измерения, исключен показ результата на визуальных компонентах.
Результаты теста
до внесения правок в StrList



после внесения правок в StrList




Схема теста:
Add(StrList,11799956,357,84)
{
 Strings=#34:actArrangeCascade.Caption=Каскадом|50:actArrangeTileHoriz.Caption=Плиткой по горизонтали|47:actArrangeTileVert.Caption=Плиткой по вертикали|30:actArrangeTile.Caption=Плиткой|31:actAbout.Caption=О программе...|21:actExit.Caption=Выход|24:actClose.Caption=Закрыть|31:actCloseAll.Caption=Закрыть все|29:actHelp.Caption=Справка IcoFX|26:actTutorials.Caption=Уроки|22:actForum.Caption=Форум|43:actHomePage.Caption=Домашняя страница IcoFX|35:actBuy.Caption=Купить полную версию|42:actObjectPacks.Caption=Покупка изображений|34:actTip.Caption=Окно приветствия...|41:actUpdate.Caption=Проверить обновления...|35:actPreferences.Caption=Настройки...|53:actDeleteWorkspace.Caption=Удалить рабочую область...|38:actToolbar.Caption=Панель инструментов|53:actSaveWorkspace.Caption=Сохранить рабочую область...|46:actDownloadLanguage.Caption=Загрузить языки...|53:actLocalToolbar.Caption=Локальная панель инструментов|37:actStatusbar.Caption=Статусная строка|40:actDefaultWorkspace.Caption=По умолчанию|28:actPanelColors.Caption=Цвета|31:actPanelPalette.Caption=Палитра|30:actPanelSwatches.Caption=Набор|33:actPanelPreview.Caption=Навигатор|31:actPanelInfo.Caption=Информация|33:actPanelTools.Caption=Инструмeнты|27:actPanelLayers.Caption=Слои|37:actPanelHistogram.Caption=Гистограмма|31:actPanelHistory.Caption=История|35:actPanelGradients.Caption=Градиенты|29:actPanelBrushes.Caption=Кисти|51:actPanelToolProperties.Caption=Свойства инструмента|34:actPanelExplorer.Caption=Проводник|39:actShortcuts.Caption=Горячие клавиши...|34:actRegister.Caption=Регистрация...|34:actNewIcon.Caption=Новая иконка...|31:actNewIcon.Hint=Новая иконка...|40:actNewImage.Caption=Новое изображение...|37:actNewImage.Hint=Новое изображение...|36:actNewCursor.Caption=Новый курсор...|33:actNewCursor.Hint=Новый курсор...|21:actGrid.Caption=Сетка|34:actGrid.Hint=Показать/Скрыть сетку|26:actOpen.Caption=Открыть...|23:actOpen.Hint=Открыть...|25:actSave.Caption=Сохранить|22:actSave.Hint=Сохранить|34:actSaveAs.Caption=Сохранить как...|28:actCapture.Caption=Захват...|29:actExtract.Caption=Извлечь...|25:actClear.Caption=Очистить|41:actSelectLanguage.Caption=Выбрать язык...|24:actUndo.Caption=Отменить|21:actUndo.Hint=Отменить|25:actRedo.Caption=Повторить|22:actRedo.Hint=Повторить|25:actDelete.Caption=Удалить|23:actCut.Caption=Вырезать|20:actCut.Hint=Вырезать|26:actCopy.Caption=Копировать|23:actCopy.Hint=Копировать|25:actPaste.Caption=Вставить|22:actPaste.Hint=Вставить|50:actPasteNew.Caption=Вставить как новое изображение|45:actPasteLayer.Caption=Вставить как новый слой|30:actSelAll.Caption=Выделить все|37:actSelNone.Caption=Отменить выделение|44:actSelInvert.Caption=Инвертировать выделение|33:actSelFit.Caption=По размеру окна|34:actSelOrig.Caption=Исходный размер|38:actSelToFront.Caption=На передний план|35:actSelToBack.Caption=На задний план|37:actHue.Caption=Оттенок и насыщение...|27:actLevels.Caption=Уровни...|27:actCurves.Caption=Кривые...|38:actLast.Caption=Последний эффект (нет)|59:actBatchIcon.Caption=Пакетное создание иконок и курсоров...|54:actBatchImage.Caption=Пакетное создание изображений...|64:actBatchExtract.Caption=Пакетное извлечение иконок и курсоров...|49:actResEditIcl.Caption=Редактор ресурсов иконок...|27:actZoomIn.Caption=Увеличить|24:actZoomIn.Hint=Увеличить|28:actZoomOut.Caption=Уменьшить|25:actZoomOut.Hint=Уменьшить|34:actFitScreen.Caption=На весь экран|40:actActualPixels.Caption=Активные пиксели|33:actSideBar.Caption=Боковая панель|39:actAutoZoom.Caption=Автомасштабирование|41:actContrast.Caption=Яркость и контраст...|40:actColBalance.Caption=Цветовой баланс...|50:actCustomFilter.Caption=Пользовательский фильтр...|31:actEmbossColor.Caption=Тиснение|39:actEmbossLight.Caption=Светлое тиснение|34:actEmboss.Caption=Среднее тиснение|37:actEmbossDark.Caption=Темное тиснение|29:actAverage.Caption=Усреднение|42:actGaussBlur.Caption=Размытие по Гауссу...|34:actBevel.Caption=Фаска и рельеф...|24:actBlur.Caption=Размытие|35:actBlurSoft.Caption=Мягкое размытие|36:actBlurMore.Caption=Сильное размытие|41:actMotionBlur.Caption=Размытие в движении|27:actSharpen.Caption=Резкость|38:actSharpenLess.Caption=Слабая резкость|39:actSharpenMore.Caption=Сильная резкость|43:actSharpenDir.Caption=Направленная резкость|50:actFindEdgesVert.Caption=Найти края (по вертикали)|53:actFindEdgesHoriz.Caption=Найти края (по горизонтали)|38:actEnhanceEdges.Caption=Расширить края|38:actDetectEdges.Caption=Определить края|34:actEdgesStrong.Caption=Резкие края|32:actEdgesWeak.Caption=Мягкие края|25:actContour.Caption=Контур|32:actNoise.Caption=Добавить шум...|24:actGlow.Caption=Свечение|28:actWaggle.Caption=Раздвоение|23:actPattern.Caption=Узор|41:actPaintDark.Caption=Затемненное смещение|43:actPaintBright.Caption=Осветленное смещение|25:actShake.Caption=Дрожание|36:actShakeLess.Caption=Слабое дрожание|31:actPale.Caption=Сильная яркость|22:actScene.Caption=Сцена|35:actGrayscale.Caption=Оттенки серого|31:actInvert.Caption=Инвертировать|22:actRed.Caption=Красный|24:actGreen.Caption=Зеленый|21:actBlue.Caption=Синий|24:actYellow.Caption=Желтый|23:actCyan.Caption=Голубой|28:actMagenta.Caption=Пурпурный|40:actSwapRG.Caption=Замена Красный-Зеленый|38:actSwapRB.Caption=Замена Красный-Синий|38:actSwapGB.Caption=Замена Зеленый-Синий|38:actHotSpot.Caption=Активная область...|43:actTestCursor.Caption=Тестировать курсор...|32:actAuthor.Caption=Автор и Имя...|38:actFrameRate.Caption=Счётчик кадров...|42:actDuplicateFrame.Caption=Дублировать кадр|42:actFrameUp.Caption=Переместить кадр вперёд|43:actFrameDown.Caption=Переместить кадр назад|38:actFrameReverse.Caption=Обратить кадры|35:actDropShadow.Caption=Наложить тень|44:actNew.Caption=Добавить новое изображение...|41:actNew.Hint=Добавить новое изображение...|42:actDel.Caption=Удалить текущее изображение|39:actDel.Hint=Удалить текущее изображение|48:actDelMore.Caption=Удалить другие изображения...|51:actImportImage.Caption=Импортировать изображение...|48:actImportImage.Hint=Импортировать изображение...|37:actNext.Caption=Следующее изображение|38:actPrev.Caption=Предыдущее изображение|32:actDuplicate.Caption=Дублировать|64:actCreateWinIco.Caption=Создать Windows иконку из изображения...|61:actCreateWinIco.Hint=Создать Windows иконку из изображения...|66:actCreateMacIco.Caption=Создать Macintosh иконку из изображения...|63:actCreateMacIco.Hint=Создать Macintosh иконку из изображения...|53:actCreateCur.Caption=Создать курсор из изображения...|50:actCreateCur.Hint=Создать курсор из изображения...|37:actSnapshot.Caption=Сделать снимок...|33:actProperties.Caption=Свойства...|36:actOpacity.Caption=Непрозрачность...|28:actFade.Caption=Затухание...|25:actShadow.Caption=Тень...|36:actTransp.Caption=Прозрачный цвет...|37:actSize.Caption=Размер изображения...|38:actCanvasSize.Caption=Размер холста...|32:actRotate.Caption=Произвольно...|44:actRotateLeft.Caption=Повернуть влево на 90°|46:actRotateRight.Caption=Повернуть вправо на 90°|38:actRotate180.Caption=Повернуть на 180°|44:actFlipHoriz.Caption=Отразить по горизонтали|41:actFlipVert.Caption=Отразить по вертикали|42:act32Bits.Caption=Цветной + Альфа (32 бит)|34:act24Bits.Caption=Цветной (24 бит)|52:act8Bits.Caption=Оптимизированный 256 цветов (8 бит)|51:act4Bits.Caption=Оптимизированный 16 цветов (4 бит)|37:actWin4Bits.Caption=16 цветов (4 бит)|48:act1Bit.Caption=Оптимизированный 2 цвета (1 бит)|34:actWin1Bit.Caption=2 цвета (1 бит)|44:actNewIcl.Caption=Новая библиотека иконок...|46:actNewCul.Caption=Новая библиотека курсоров...|51:actResEditCul.Caption=Редактор ресурсов курсоров...|60:actAntialiasing.Caption=Использовать сглаживание изображений|57:actAntialiasing.Hint=Использовать сглаживание изображений|57:actSelTrans.Caption=Использовать прозрачность в выделении|54:actSelTrans.Hint=Использовать прозрачность в выделении|59:actFilterAlpha.Caption=Использовать фильтр для Альфа-канала|56:actFilterAlpha.Hint=Использовать фильтр для Альфа-канала|36:actExpand.Caption=Растянуть холст...|38:actLocalSidebar.Caption=Боковая панель|51:actLocalSidebar.Hint=Показать/Скрыть боковую панель|54:actIconCustomization.Caption=Настроить значок папки...|51:actIconCustomization.Hint=Настроить значок папки...|48:actSaveSelection.Caption=Сохранить выделенное...|48:actLoadSelection.Caption=Загрузить выделенное...|21:dlgOpen.Title=Открыть|27:dlgSave.Title=Сохранить как|24:dlgExtract.Title=Извлечь|35:dlgImport.Title=Открыть изображение|68:actCreateAndroidIco.Caption=Создать Android значок из изображения...|65:actCreateAndroidIco.Hint=Создать Android значок из изображения...|63:actCreateiPhoneIco.Caption=Создать iOS значок из изображения...|60:actCreateiPhoneIco.Hint=Создать iOS значок из изображения...|64:actAdjustAll.Caption=Использовать коррекцию для всех изображений|61:actAdjustAll.Hint=Использовать коррекцию для всех изображений|48:actUndoAll.Caption=Отменить на всех изображениях|49:actRedoAll.Caption=Повторить на всех изображениях|23:frmColors.Caption=Цвета|18:lblAlpha.Caption=A|59:btnDefault.Hint=Цвета переднего и заднего фона по умолчанию|54:btnSwitch.Hint=Поменять цвета переднего и заднего фона|52:btnTransparent.Hint=Сделать выбраный цвет прозрачным|21:GraySliders.Caption=K|18:HSBSliders.Item1=H|18:HSBSliders.Item2=S|18:HSBSliders.Item3=B|20:colBG.Hint=Цвет фона|24:colFG.Hint=Передний цвет|18:RGBSliders.Item1=R|18:RGBSliders.Item2=G|18:RGBSliders.Item3=B|34:actGraySlider.Caption=Шкала серого|31:actRGBSliders.Caption=RGB шкала|31:actHSBSliders.Caption=HSB шкала|44:actCopyHtml.Caption=Копировать цвет как HTML|68:actDefaultColors.Caption=Цвета переднего и заднего фона по умолчанию|63:actSwitchColors.Caption=Поменять цвета переднего и заднего фона|64:actFGTransparent.Caption=Сделать прозрачным цвет переднего плана|61:actBGTransparent.Caption=Сделать прозрачным цвет заднего фона|55:actTransparent.Caption=Сделать выбраный цвет прозрачным|
 Point(doGetString)
 Point(onGetString)
 Point(Index)
 link(onGetString,13350891:doStop,[(396,97)(396,76)(298,76)(298,139)])
}
Add(Type_CreateFromList,7077322,357,245)
{
 link(VarsList,11799956:Text,[])
}
Add(Type_RW,16078725,357,294)
{
 link(GType,7077322:FType,[])
 link(onRead,14675561:doStop,[(494,300)(494,209)])
}
Add(MainForm,12311840,266,231)
{
 Width=595
 Height=515
 Caption="Associative Array Test"
 link(onCreate,7077322:doCreate,[])
}
Add(TimeCounter,14675561,504,196)
{
 Precision=1
 link(onStart,11067981:In,[])
 link(onStop,13148875:doAdd,[])
}
Add(ArrayEnum,10371688,371,196)
{
 link(onItem,5812667:doSplit,[])
 link(onEndEnum,5102839:In,[])
 link(Array,11799956:Array,[])
}
Add(MultiStrData,5812667,455,196)
{
 Char="="
 link(onPart1,14675561:doStart,[])
}
Add(Plotter,15403322,203,133)
{
 Left=545
 Top=245
 Align=5
 Name="Plott"
 GridX=0
 GridY=20
 MaxW=234
}
Add(PlotPoints,13148875,553,203)
{
 Grapher="Plott"
 Color=16711680
 Size=2
 Shape=2
 link(ValueX,10371688:Index,[(566,187)(412,187)(412,236)(384,236)])
}
Add(ChildPanel,4226264,154,126)
{
 link(onEvent1,15022404:doFor,[])
 link(onEvent2,15403322:doClear,[])
}
BEGIN_SDK
  Add(EditMulti,14365196,7,7)
  {
   EventCount=2
   WorkCount=1
   Width=454
   Height=263
   link(doWork1,16161322:doWork2,[(81,13)(81,188)])
  }
  Add(Panel,13268776,42,161)
  {
   Left=35
   Top=105
   Width=547
   Height=39
   Align=2
   Color=-16777214
   BevelInner=0
  }
  Add(Label,5937623,42,35)
  {
   Left=10
   Top=10
   Width=113
   Height=17
   Color=-16777214
   Caption="Количество проходов"
  }
  Add(UpDown,9988057,147,35)
  {
   Left=135
   Top=6
   Height=25
   Min=1
   Position=1
   Point(doEnabled)
   link(onPosition,4174072:doText,[])
  }
  Add(Edit,4174072,203,35)
  {
   Left=165
   Top=8
   Width=40
   Font=[MS Sans Serif,8,1,0,1]
   Text="1"
   Alignment=1
   DataType=1
   Point(doEnabled)
   link(onChange,10294789:doCompare,[])
  }
  Add(Button,16104950,42,105)
  {
   Left=220
   Top=8
   Caption="Старт"
   Point(doEnabled)
   link(onClick,4646026:doEvent1,[])
  }
  Add(VisualShape,764894,385,91)
  {
   Left=300
   Top=10
   Width=16
   Height=16
   Color2=255
  }
  Add(Label,15565354,406,91)
  {
   Left=325
   Top=10
   Width=60
   Height=17
   Color=-16777214
   Caption="по индексу"
  }
  Add(VisualShape,14726524,378,133)
  {
   Left=395
   Top=10
   Width=16
   Height=16
   Color2=16711680
  }
  Add(Label,15472952,406,133)
  {
   Left=420
   Top=10
   Width=49
   Height=17
   Color=-16777214
   Caption="по ключу"
  }
  Add(Button,14453657,378,14)
  {
   Left=480
   Top=8
   Caption="Стереть"
   Point(doEnabled)
   link(onClick,14365196:onEvent2,[])
  }
  Add(If_else,10294789,252,35)
  {
   Type=3
   Op2=Integer(10)
   link(onFalse,12046729:doData,[])
  }
  Add(DoData,12046729,301,42)
  {
   Data=Integer(10)
   link(onEventData,9988057:doPosition,[(340,48)(340,27)(137,27)(137,41)])
  }
  Add(For,12527065,196,112)
  {
   Start=1
   link(onEvent,14365196:onEvent1,[(361,118)(361,13)])
   link(End,4174072:Text,[])
  }
  Add(Thread,4902049,147,105)
  {
   Delay=1
   FastStop=0
   Point(doStopFlag)
   link(onSyncExec,12527065:doFor,[])
  }
  Add(Hub,4646026,98,105)
  {
   OutCount=3
   link(onEvent1,4902049:doStart,[])
   link(onEvent2,4902049:doStopFlag,[(130,118)(130,125)])
   link(onEvent3,16161322:doWork1,[(130,125)(130,181)])
  }
  Add(ChanelToIndex,16161322,189,175)
  {
   link(onIndex,14134448:doEvent1,[])
  }
  Add(Hub,14134448,231,175)
  {
   OutCount=4
   link(onEvent1,9988057:doEnabled,[(260,181)(260,167)(137,167)(137,48)])
   link(onEvent2,4174072:doEnabled,[(263,188)(263,160)(186,160)(186,55)])
   link(onEvent3,14453657:doEnabled,[(368,195)(368,20)])
   link(onEvent4,16104950:doEnabled,[(256,202)(256,216)(32,216)(32,111)])
  }
END_SDK
Add(For,15022404,252,126)
{
 End=234
 link(onEvent,13350891:doStart,[])
 link(onStop,10371688:doEnum,[(291,139)(291,202)])
}
Add(TimeCounter,13350891,308,126)
{
 Precision=1
 link(onStart,11799956:doGetString,[])
 link(onStop,6839743:doAdd,[])
}
Add(LineBreak,16143432,294,294)
{
 Caption="Read"
 link(Out,16078725:doRead,[])
 Primary=[11067981,301,-98]
}
Add(PlotPoints,6839743,413,133)
{
 Grapher="Plott"
 Size=2
 Shape=2
 link(ValueX,11799956:Index,[(426,124)(454,124)(454,173)(384,173)])
}
Add(LineBreak,12963786,105,126)
{
 link(Out,4226264:doWork1,[])
 Primary=[5102839,315,77]
}
Add(Label,4283802,203,231)
{
 Left=350
 Top=355
 Align=4
 Caption="Индекс"
 Alignment=2
}
Add(ChildPanel,5236222,161,231)
{
}
BEGIN_SDK
  Add(EditMulti,6738250,21,21)
  {
   Width=216
   Height=186
  }
  Add(Panel,9650527,56,84)
  {
   Left=35
   Top=105
   Width=20
   Height=125
   Align=1
   BevelInner=0
   Point(onResize)
   Point(Handle)
   Point(Height)
   link(onResize,7416401:doRefresh,[])
  }
  Add(Img_Text,14823966,161,91)
  {
   Orientation=90
   Text="Время (микосекунд)"
   Point(Y)
   Point(Transform)
   link(Bitmap,7416401:Bitmap,[(167,82)(153,82)(153,131)(111,131)])
   link(Y,11662847:reCalc,[(181,82)(202,82)(202,187)(76,187)])
   link(Transform,7446959:Transform,[])
  }
  Add(Img_UseRotate,7446959,182,35)
  {
   Angle=0
  }
  Add(MathParse,11662847,63,147)
  {
   MathStr="(%1 + %2)/2"
   Point(reCalc)
   link(X1,9650527:Height,[])
   link(X2,14823966:TextWidth,[(76,141)(167,141)])
  }
  Add(PaintBox,7416401,105,91)
  {
   Left=1
   Top=1
   Width=25
   Height=123
   Align=5
   ClearBeforeDraw=0
   link(onBeforeDraw,14823966:doDraw,[])
  }
END_SDK
Add(StatusBar,14940164,504,371)
{
 Panels=#13:Индекс: 0=100|18:Время (мкс): 0=200|
}
Add(PlotMouseValues,15992085,203,357)
{
 Grapher="Plott"
 link(onMouseMove,9507566:doSplit,[])
}
Add(MT_Part,9507566,259,371)
{
 link(onSplit,11953855:doStrCat,[])
 link(onPart,4112489:doCalc,[(319,384)(319,426)])
}
Add(StrCat,11953855,329,371)
{
 Str1="Время (мкс): "
 link(onStrCat,16360120:doAdd,[])
}
Add(MT_Add,16360120,371,371)
{
 Data=Integer(1)
 link(onAdd,10166719:doWork2,[])
}
Add(StrCat,15358732,378,420)
{
 Str1="Индекс: "
 link(onStrCat,13402865:doAdd,[])
}
Add(MT_Add,13402865,420,420)
{
 Data=Integer(0)
 link(onAdd,10166719:doWork3,[(480,426)])
}
Add(HubEx,10166719,476,371)
{
 link(onEvent,14940164:doText,[])
}
Add(MathParse,4112489,329,420)
{
 MathStr="trunc(%1)"
 link(onResult,15358732:doStrCat,[])
}


карма: 1

0