Архив эхоконференции RU.PERL сообщение #3045

- RU.PERL ----------------------------------------------------------- RU.PERL -
 Msg  : #3044 [502]
 От   : Alexander P. Russkih          2:468/75            25 марта 04, 07:55
 Кому : All                                               26 марта 04, 23:26
 Тема : Re: Убрать пробелы в  хеше
-------------------------------------------------------------------------------
@RFC-NNTP-Posting-Date: Thu, 25 Mar 2004 05:55:09 +0000 (UTC)
From: "Alexander P. Russkih" 
Reply-To: rs_alex@bigfoot.com

Sergey Zhuravlev wrote:
> Слышал я, что умные книжки не всем помогают...

ок. только давай учтем одну маленькую особенность. вызовем тест бенчмарка для 
всех трех вариантов не в одном коде, а посредством трех последовательных 
вызовов, ну, знаешь, чтобы там всякие кеширования и оптимизации роаля не 
играли, логично? тогда смотрим ниже:

> rbcmaint-2.04$ perl -MBenchmark -e '
> $_="sdgfdsfgsdfg";
> timethese(1000000, 
> {one => sub {s/^\s+|\s+$//g}, 
> ones => sub {s/^\s*(.*)\s*$/$1/}, 
> two => sub {s/^\s+//; s/\s+$//;} 
> } );
> '
> Benchmark: timing 1000000 iterations of one, ones, two...
>        one:  0 wallclock secs ( 0.50 usr +  0.00 sys = 0.50 CPU) @ 
> 2000000.00/s (n=1000000)
>       ones: 17 wallclock secs (11.77 usr + -0.02 sys = 11.76 CPU) @ 
> 85049.83/s (n=1000000)
>        two:  1 wallclock secs ( 0.76 usr +  0.00 sys = 0.76 CPU) @ 
> 1319587.63/s (n=1000000)

все вызывалось в той же последовательности, что и в твоем примере:

olden@home:~$ perl -MBenchmark -e '$_="sdgfdsfgsdfg";timethese(1000000, {one 
=> sub {s/^\s+|\s+$//g}} );'
Benchmark: timing 1000000 iterations of one...
        one:  1 wallclock secs ( 0.39 usr +  0.00 sys =  0.39 CPU) @ 
2564102.56/s (n=1000000)
             (warning: too few iterations for a reliable count)
olden@home:~$ perl -MBenchmark -e '$_="sdgfdsfgsdfg";timethese(1000000, {one 
=> sub {s/^\s*(.*)\s*$/$1/}} );'
Benchmark: timing 1000000 iterations of one...
        one:  6 wallclock secs ( 6.27 usr +  0.00 sys =  6.27 CPU) @ 
159489.63/s (n=1000000)
olden@home:~$ perl -MBenchmark -e '$_="sdgfdsfgsdfg";timethese(1000000, {one 
=> sub {s/^\s+//; s/\s+$//}} );'
Benchmark: timing 1000000 iterations of one...
        one:  0 wallclock secs ( 0.48 usr +  0.00 sys =  0.48 CPU) @ 
2083333.33/s (n=1000000)

кстати говоря запуск твего теста выдал несколько более другие результаты, но 
это не суть важно, так как пропорционально они практически соответствуют твоим:

olden@home:~$ perl -MBenchmark -e '
 > $_="sdgfdsfgsdfg";
 > timethese(1000000,
 > {one => sub {s/^\s+|\s+$//g},
 > ones => sub {s/^\s*(.*)\s*$/$1/},
 > two => sub {s/^\s+//; s/\s+$//;}
 > } );
 > '
Benchmark: timing 1000000 iterations of one, ones, two...
        one:  1 wallclock secs ( 0.30 usr +  0.00 sys =  0.30 CPU) @ 
3333333.33/s (n=1000000)
             (warning: too few iterations for a reliable count)
       ones:  6 wallclock secs ( 5.94 usr +  0.00 sys =  5.94 CPU) @ 
168350.17/s (n=1000000)
        two:  1 wallclock secs ( 0.44 usr +  0.00 sys =  0.44 CPU) @ 
2272727.27/s (n=1000000)


наверное у нас просто разные конфигурации компьютеров.
кстати говоря мне бы хотелось взглянуть на результаты тестов в том виде в 
котором привел их я, чтобы делать окончательный вывод. а так мы получаем то, 
что и следовало доказать: на текущий момент самая быстрая и оптимальная для 
всех конструкция - это последовательный вызов s/^\s+// и s/\s+$//.

:-)

--- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007
 * Origin: Registered Linux User #341226 (2:468/75@fidonet)


[← назад]
Другие эхоконференции сети Фидо[вперёд →]
[-10]
[-100]
[-500]
[-1000]
[3000] [3001] [3002] [3003] [3004] [3005] [3006] [3007] [3008] [3009] [3010] [3011] [3012] [3013] [3014] [3015] [3016] [3017] [3018] [3019] [3020] [3021] [3022] [3023] [3024] [3025] [3026] [3027] [3028] [3029] [3030] [3031] [3032] [3033] [3034] [3035] [3036] [3037] [3038] [3039] [3040] [3041] [3042] [3043] [3044] [3045] [3046] [3047] [3048] [3049] [3050] [3051] [3052] [3053] [3054] [3055] [3056] [3057] [3058] [3059] [3060] [3061] [3062] [3063] [3064] [3065] [3066] [3067] [3068] [3069] [3070] [3071] [3072] [3073] [3074] [3075] [3076] [3077] [3078] [3079] [3080] [3081] [3082] [3083] [3084] [3085] [3086] [3087] [3088] [3089] [3090] [3091] [3092] [3093] [3094] [3095] [3096] [3097] [3098] [3099] [3100] [3101] [3102] [3103] [3104] [3105] [3106] [3107] [3108] [3109] [3110] [3111] [3112] [3113] [3114] [3115] [3116] [3117] [3118] [3119] [3120] [3121] [3122] [3123] [3124] [3125] [3126] [3127] [3128] [3129] [3130] [3131] [3132] [3133] [3134] [3135] [3136] [3137] [3138] [3139] [3140] [3141] [3142] [3143] [3144] [3145] [3146] [3147] [3148] [3149] [3150] [3151] [3152] [3153] [3154] [3155] [3156] [3157] [3158] [3159] [3160] [3161] [3162] [3163] [3164] [3165] [3166] [3167] [3168] [3169] [3170] [3171] [3172] [3173] [3174] [3175] [3176] [3177] [3178] [3179] [3180] [3181] [3182] [3183] [3184] [3185] [3186] [3187] [3188] [3189] [3190] [3191] [3192] [3193] [3194] [3195] [3196] [3197] [3198] [3199] [3200] [3201] [3202] [3203] [3204] [3205] [3206] [3207] [3208] [3209] [3210] [3211] [3212] [3213] [3214] [3215] [3216] [3217] [3218] [3219] [3220] [3221] [3222] [3223] [3224] [3225] [3226] [3227] [3228] [3229] [3230] [3231] [3232] [3233] [3234] [3235] [3236] [3237] [3238] [3239] [3240] [3241] [3242] [3243] [3244] [3245] [3246] [3247] [3248] [3249] [3250] [3251] [3252] [3253] [3254] [3255] [3256] [3257] [3258] [3259] [3260] [3261] [3262] [3263] [3264] [3265] [3266] [3267] [3268] [3269] [3270] [3271] [3272] [3273] [3274] [3275] [3276] [3277] [3278] [3279] [3280] [3281] [3282] [3283] [3284] [3285] [3286] [3287] [3288] [3289] [3290] [3291] [3292] [3293] [3294] [3295] [3296] [3297] [3298] [3299] [3300] [3301] [3302] [3303] [3304] [3305] [3306] [3307] [3308] [3309] [3310] [3311] [3312] [3313] [3314] [3315] [3316] [3317] [3318] [3319] [3320] [3321] [3322] [3323] [3324] [3325] [3326] [3327] [3328] [3329] [3330] [3331] [3332] [3333] [3334] [3335] [3336] [3337] [3338] [3339] [3340] [3341] [3342] [3343] [3344] [3345] [3346] [3347] [3348] [3349] [3350] [3351] [3352] [3353] [3354] [3355] [3356] [3357] [3358] [3359] [3360] [3361] [3362] [3363] [3364] [3365] [3366] [3367] [3368] [3369] [3370] [3371] [3372] [3373] [3374] [3375] [3376] [3377] [3378] [3379] [3380] [3381] [3382] [3383] [3384] [3385] [3386] [3387] [3388] [3389] [3390] [3391] [3392] [3393] [3394] [3395] [3396] [3397] [3398] [3399] [3400] [3401] [3402] [3403] [3404] [3405] [3406] [3407] [3408] [3409] [3410] [3411] [3412] [3413] [3414] [3415] [3416] [3417] [3418] [3419] [3420] [3421] [3422] [3423] [3424] [3425] [3426] [3427] [3428] [3429] [3430] [3431] [3432] [3433] [3434] [3435] [3436] [3437] [3438] [3439] [3440] [3441] [3442] [3443] [3444] [3445] [3446] [3447] [3448] [3449] [3450] [3451] [3452] [3453] [3454] [3455] [3456] [3457] [3458] [3459] [3460] [3461] [3462] [3463] [3464] [3465] [3466] [3467] [3468] [3469] [3470] [3471] [3472] [3473] [3474] [3475] [3476] [3477] [3478] [3479] [3480] [3481] [3482] [3483] [3484] [3485] [3486] [3487] [3488] [3489] [3490] [3491] [3492] [3493] [3494] [3495] [3496] [3497] [3498] [3499] [3500] [+10]
[+100]
[+500]
[+1000]
Скачать Волкодав

Канарские острова  free hosted forums  форум вебмастеров  бесплатный хостинг