parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 03.11.2013 05:13 / 03.11.2013 05:20

$.type[string] добавлен:
1. для общности
2. для скорости

там просто копиру.тся значения столбцов, это гораздо быстрее, чем выполнять код.
добавил возможность написать ^t.hash{$t.name}{$t.value}[$.type[string]] и сравнил.
@USE
debug/Erusage.p

@main[]
$t[^table::create{name	value^for[i](1;10000){^#0Aname $i	value $i}}]

^Erusage:measure{
#	$h[^do{^m1[]}]
#	$h[^do{^m2[]}]
	$h[^do{^m3[]}]
#	$h[^do{^m4[]}]
}[v]
#^dstop[$h]

MS: $v.time<br />
BL: $v.memory_block<br />
KB: $v.memory_kb



@do[jCode][result;i]
^for[i](1;100){$result[$jCode]}


@m1[][result]
$result[^t.hash[name;value][$.type[string]]]


@m2[][result]
$result[^hash::create[^t.menu{$.[$t.name][$t.value]}]]


@m3[][result]
$result[^hash::create[]]
^t.menu{$result.[$t.name][$t.value]}


@m4[][result]
$result[^t.hash{$t.name}{$t.value}[$.type[string]]]


@z[]
1.
MS: 376.022
BL: 35680
KB: 31396

2.
MS: 1101.063
BL: 71396
KB: 62756

3.
MS: 845.048
BL: 44568
KB: 39224

4.
MS: 827.047
BL: 89088
KB: 78276

выводы делай сам (могу прислать exe-шник потестировать другие варианты).

P.S. ключ в виде кода можно указать уже сейчас (надо не забыть добавить это в доку). поэтому сейчас можно сравнить ^t.hash[name;value][$.type[string]] с ^t.hash{$t.name}[value][$.type[string]], чтобы посмотреть насколько всё замедляет junction.