а мне эти оптимизации кажутся идеологически неправильными
Misha v.3 03.02.2006 20:55
т.к. вывести всё дерево требуется один раз, а вот получать uri объекта по id - тучу раз (ну... по крайней мере у меня). может быть именно поэтому у egr-а данные помещаются в хеш.
правда я оригинальный get_uri переписал бы, чтобы там была рекурсия. примерно так:
@get_uri[id]
^if($id && $items_hash.$id){
^rem{ *** если id != 0 и о таком id есть запись в хеше *** }
^if(def $items_hash.[$id].uri){
^rem{ *** если uri уже вычислен - возвращаем его *** }
$result[$items_hash.[$id].uri]
}{
^rem{ *** не вычислен - вычисляем *** }
$result[^if($items_hash.[$id].parent_id){^get_uri[$items_hash.[$id].parent_id]}/$items_hash.[$id].path]
^rem{ *** записываем вычисленное чтобы больше не заниматься этими глупостями *** }
$items_hash.[$id].uri[$result]
}
}{
^throw[uri.missing;$id;Id '$id' not found]
}
#end @get_uri[]
P.S. код не проверял
- Предлагаю оптимизировать класс uri.p, mashi 29.11.2005 21:08 / 29.11.2005 21:13
- uri (класс): исправления и доработки, Никита Козин [M] 03.02.2006 14:36 / 03.02.2006 14:36
- Ответ, mashi 03.02.2006 20:26
- Ответ, Никита Козин [M] 06.02.2006 07:06
- Ответ, mashi 06.02.2006 11:38
- Ответ, Никита Козин [M] 06.02.2006 11:53
- а мне эти оптимизации кажутся идеологически неправильными, Misha v.3 [M] 03.02.2006 20:55
- дополнения, dev 02.12.2005 18:20 / 02.12.2005 18:25
- Ответ, mashi 06.12.2005 20:48 / 06.12.2005 20:53
- Ответ, Misha v.3 [M] 01.12.2005 18:34 / 01.12.2005 18:56
- идея мне нравится, dev 01.12.2005 13:35
- ответ:, mashi 01.12.2005 15:37
- Ответ, dev 01.12.2005 18:12
- Ответ, mashi 02.12.2005 01:25
- Ответ, dev 02.12.2005 14:02
- Ответ, dev 02.12.2005 13:29
- children (-), Александр Петросян (PAF) [M] 01.12.2005 19:14
- @geveme...[] - афтар жжошь! пеши есчо! :) (-), Misha v.3 [M] 29.11.2005 22:14