- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
#line 411 "ext/standard/var_unserializer.c"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
switch (yych) {
case 'C':
case 'O': goto yy13;
case 'N': goto yy5;
case 'R': goto yy2;
case 'S': goto yy10;
case 'a': goto yy11;
case 'b': goto yy6;
case 'd': goto yy8;
case 'i': goto yy7;
case 'o': goto yy12;
case 'r': goto yy4;
case 's': goto yy9;
case '}': goto yy14;
default: goto yy16;
}
yy2:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy95;
default: goto yy3;
}
yy3:
#line 733 "ext/standard/var_unserializer.re"
{ return 0; }
#line 442 "ext/standard/var_unserializer.c"
yy4:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy89;
default: goto yy3;
}
yy5:
yych = *++YYCURSOR;
switch (yych) {
case ';': goto yy87;
default: goto yy3;
}
yy6:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy83;
default: goto yy3;
}
yy7:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy77;
default: goto yy3;
}
yy8:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy53;
default: goto yy3;
}
yy9:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy46;
default: goto yy3;
}
yy10:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy39;
default: goto yy3;
}
yy11:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy32;
default: goto yy3;
}
yy12:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy25;
default: goto yy3;
}
yy13:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case ':': goto yy17;
default: goto yy3;
}
yy14:
++YYCURSOR;
/* далее еще несколько похожих кусков кода чуть менее хардкорных */
http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/var_unserializer.c?view=markup
Исходники функции unserialize в php, не зря она так медленно работает на больших массивах...
Lure Of Chaos 13.03.2011 11:15 # +1
pingw33n 13.03.2011 12:38 # +6
dim-s 13.03.2011 13:02 # −3
Dummy00001 13.03.2011 14:40 # 0
dim-s 13.03.2011 14:54 # −2
Читаем дальше и понимаем что это гавно, пусть даже в косвенном виде, т.к. разработчики не удосужились написать разбор строки вручную, без регулярных выражений. Напишу, вернее написал, но не для пхп (но в формате пхп), а разбор намного быстрее.
Dummy00001 13.03.2011 15:08 # 0
dim-s 13.03.2011 16:24 # 0
> bugs.php.net/bug.php?id=52832
> Вину за собой признают, правда патчить 5.3 отказываются, > видимо, пойдет в 6.0 (5.4?).
Если ты не понял - скорость не должна уменьшаться в геометрической прогрессии в зависимости от размера данных.
dim-s 13.03.2011 17:15 # −2
Dummy00001 13.03.2011 17:49 # +1
bober_maniac 13.03.2011 14:53 # +5
nil 13.03.2011 16:52 # 0
Странно, переменные, вроде, с yy начинаются, а код не похож на сгенеренный lex-ом…
Что-то здесь нечисто.
dim-s 13.03.2011 17:04 # 0
nil 13.03.2011 18:45 # 0
gegMOPO4 13.03.2011 22:31 # 0
bober_maniac 13.03.2011 23:25 # 0
bober_maniac 13.03.2011 22:59 # 0
absolut 13.03.2011 14:01 # 0
bober_maniac 13.03.2011 14:49 # 0
absolut 13.03.2011 15:13 # 0
bober_maniac 13.03.2011 15:42 # 0
Какие проблемы то?
absolut 13.03.2011 15:52 # 0
guest 09.04.2011 00:26 # 0
absolut 13.03.2011 15:56 # +4
dim-s 13.03.2011 16:08 # 0
gegMOPO4 13.03.2011 17:03 # +4
Анонимус 14.03.2011 18:22 # +3
в пхп говно в каждой строчке, а они доебались до автогенеренного кода