Вверх ↑
Ответов: 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