Ответ
Misha v.3 03.05.2014 04:50
/ 03.05.2014 04:55
1. всегда "правильнее" писать в шаблоне конструкцию вида:
<начальный символ><всё что угодно кроме конечного символа><конечный символ>
вместо
<начальный символ><всё что угодно, но минимальной длины><конечный символ>
например шаблон поиска непустых аттрибутов без парсерного экранирования (выглядит проще для понимания, т.к. нет кучи regex-эскейп символов, которые есть в случае квадратных скобок):
".+?" => "[^"]+"
2. возможно я запутал, назвав метод create. наверное название dive подошло бы лучше. если будете использовать этот код у себя, лучше переименуйте.
P.S. ради интереса я сам потестировал код. тот, что с микрооптимизациями -- лучше в плане расхода памяти, причём разница заметна и без микроскопа. сравнивал и с начальным своим кодом и с некоторыми промежуточными вариантами.