Ответ
Misha v.3 12.07.2015 03:20
- bool можно не создавать делать ($del.[$k][]), хотя это почти пофигу, т.к. что bool-ы, что void -- singleton-ы.
- внутренний цикл удаления (я про sub) в любом случае эффективнее, чем внешнее удаление по элементно
- вариант с _keys менее удобен в плане доступа к элементам, там придётся делать $value[$myhash.$key] с внутренним lookup-ом каждого элемента, тогда как в случае foreach/sub value доступен изначально и без lookup-а.
- таблица _keys создаётся всегда, тогда как в $del элементы добавляются не всегда. но да, если удалять будем всё, то вариант с sub скорее всего будет менее эффективен.
в любом случае, это актуально только для больших хэшей. и там надо не гадать, а взять и измерить, я просто указан на аспект производительности в данной задаче.