Как дженерики (Вектор) работают в AVM?

Вау!

Несколько лет назад у нас были огромные проблемы в популярных CMS. По равнине в основном хорошие показатели. Но он меняется вниз, когда появляются боковые проходы.

Итак, я написал несколько уродливых строк, чтобы найти самый быстрый способ. Обратите внимание, что ресурсы, устанавливающие различные пределы!

1-й) Я использовал время для установления прямой адресной точки. У каждого есть свой набор плоских файлов.

2) Я сделал рамдиск. Убедитесь, что у вас достаточно для вашего проекта!

3-ий) Для резервного копирования я использовал rsync и renundance, сжатый / извлеченный в Ramdisk в tar.gz

На практике это самый быстрый способ один. Преобразование временного кода и создание рекурсивных структур папок очень просто. Читайте, пишите, заменяйте, удаляйте тоже.

Окончательный выпуск приводит к обработке из:

PHP / MySQL> 5 с Perl / HDD ~ 1,2 с Perl / RamDisk ~ 0,001 с

Когда я вижу, что вы там делаете эта конструкция может быть полезна для вас. Я не знаю о внутренностях вашего проекта.

Жесткий диск будет жить намного дольше, ваш рабочий процесс может быть оптимизирован с помощью прямой адресации. Это доступно с других этапов. Скажем, вы можете работать на этой основе и из других скриптов. Как вы полагаете, обработка данных в R, извещатель из оболочки или что-то еще ...

Ошибки буферизации, такие как MySQL, больше не нужны. Ваш процессор больше не зацикливается.

14
задан user7116 3 June 2011 в 16:57
поделиться

1 ответ

Работа инженерного анализа, которую я сделал на этом, не включала объявление Ваших собственных универсальных типов, хотя это очень вероятно возможно.

Ссылки на объявляющий универсальный тип (без параметров) (Вектор) сделаны через регулярное полностью определенное имя (хотя любое мультиимя должно сделать).

Ссылки на введенный универсальный тип (Вектор. <интервал> в противоположность Вектору. <>), сделаны новым видом мультиимени (0x1D), который я называю GenericName. GenericName имеет формат как так:

[Kind] [TypeDefinition] [ParamCount] [Param1] [Param2] [ParamN]

Где:

  • [TypeDefinition] является U30 в таблицу мультиимени
  • [ParamCount] является U8 (U30?) того, сколько там параметры типа
  • [ParamX] является U30 в таблицу мультиимени.

Очевидно, дженерики еще обычно не поддерживаются, таким образом, ParamCount всегда будет 1 (для Вектора. <*>).

Другая интересная вещь состоит в том, как создаются экземпляры класса. Новый код операции был добавлен в Flash 10 (0x53), который я назову MakeGenericType. MakeGenericType объявляется со следующим стеком:

TypeDefinition, ParameterType1, ParameterTypeN -> GenericType

Это также имеет один параметр, U8 (U30?) указывающий, сколько параметров находится на стеке. Вы будете обычно видеть, что MakeGenericType используется как это:

GetLex [TypeDefinitionMultiname]
GetLex [ParameterTypeMultiname]
MakeGeneric [ParamCount]
Coerce [GenericNameMultiname]
Construct [ConstructorParamCount]

Таким образом, если у Вас было следующее...

GetLex __AS3__.vec::Vector
GetLex int
MakeGeneric 1
Coerce __AS3__.vec::Vector.<int>
Construct 0

У Вас теперь был бы экземпляр Вектора. <интервал>

20
ответ дан 1 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: