เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ perlperf เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
perlperf - เปเบเบฑเบเบเบดเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบ Perl
เบฅเบฒเบเบฅเบฐเบญเบฝเบ
เบเบตเปเปเบกเปเบเบเบฒเบเปเบเบฐเบเปเบฒเบเบฒเบเบเปเบฒเปเบเปเปเบเบฑเบเบเบดเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบ
เบเปเบฒเปเบเปเบเบฑเบเบเบฒเบเบญเปเบฒเบเบญเบตเบเปเบเบเบชเบฐเปเบเบฒเบฐเบเบฑเบเปเบเบเบเบฒเบ perl. เปเบเบเบฐเบเบฐเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒ perl เบซเบผเบฒเบเบเบปเบเปเบเปเบกเบฒ
เบเบฒเบเบเบฒเบชเบฒเบญเบทเปเบ, เปเบฅเบฐเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบงเบฒเบกเบฎเบนเปเปเบเบทเปเบญเบเบเบปเปเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฒเบกเบเบงเบฒเบกเปเบซเบกเบฒเบฐเบชเบปเบก, เบกเบตเบซเบผเบฒเบ
เบเบปเบเบญเบทเปเบเปเบเบตเปเบญเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบเบปเบเบเบฐเปเบซเบเบเบเบฒเบเบเบปเบงเบเบตเปเบชเบฐเปเบเบฒเบฐ perl เบเปเบฒเบเบงเบเบซเบเปเบญเบ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบ
เบชเบฐเบเบฑเบ condensed, เบเบฒเบเบเบตเบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบกเปเบเบกเบฒเบเบฒเบ Samurai เบเบตเปเบเบธเปเบเบเบตเปเบกเบตเบเบทเปเบชเบฝเบ,
Miyamoto Musashi, เบเบนเปเบเบตเปเปเบงเบปเปเบฒเบงเปเบฒ:
"เบขเปเบฒเบกเบตเบชเปเบงเบเบฎเปเบงเบกเปเบเบเบดเบเบเบฐเบเปเบฒเบเบตเปเบเปเปเบกเบตเบเบฐเปเบซเบเบ"
เปเบ 1645.
เบเบฒเบเบฅเบงเบก
เบเบฒเบเบเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบปเปเบงเปเบเบเบตเปเบชเบธเบเบเบตเปเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเปเบฎเบฑเบเปเบกเปเบเปเบเบทเปเบญเบเบฐเบเบฒเบเบฒเบกเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒ
เบเปเบญเบเบเบตเปเปเบเบเบเบฒเบเบเบฐเปเบฎเบฑเบเบซเบเบฑเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ - เบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเปเปเบเบต. เบเปเปเบกเบตเบเบธเบเบขเบนเปเปเบ
เบกเบตเปเบเบเบเบฒเบเปเบงเบเบตเปเบชเบธเบเบเบตเปเบเปเปเปเบฎเบฑเบเบงเบฝเบ. เบงเบฝเบเบเปเบฒเบญเบดเบเปเบกเปเบเปเบเบทเปเบญเปเบญเบปเบฒเปเบเบเบเบฒเบ
เบขเปเบฒเบเบเบทเบเบเปเบญเบ เปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ, (เบเปเปโเปเบเปโเบเปเบฒเบงโเปเบเบดเบโเบเบฒเบโเบฎเบฑเบโเบเบฐโเบเบฑเบโเบเบธเบโเบเบฒเบโเบเบปเบโเบชเบญเบโเปเบกเปเบโเบขเปเบฒเบโเปเบเบฑเบกโเบเบตเปโ
functional), เปเบฅเบฐเบเบฝเบเปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบทเปเบญเบเบดเบเบฒเบฅเบฐเบเบฒ optimizing เบกเบฑเบ. เบกเบตเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง
เบฅเบฐเบซเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบกเบตเบซเบผเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบเปเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเบตเปเปเบเบฑเบเบเบฒเบเปเบ
เบเบฑเบเบเบฐเบเบงเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเป.
ONE เบเบฑเปเบเบเบญเบเบเบต เบเปเบฒเบเบเบฒเบ
เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบ เบเบณ เบเบปเบเปเบงเบฅเบฒเบเบทเปเบเบเบฒเบ เบชเบณ เบฅเบฑเบเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบขเบนเป, เปเบเบดเปเบเบเปเบญเบเบเบฒเบเปเบงเบฅเบฒ
เบกเบตเบเบงเบฒเบกเปเปเบฒเปเบเบทเปเบญเบเบท เปเบฅเบฐ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเปเบณเปเบเป. เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเป "Benchmark" เบซเบผเบท
เปเบกเบเบนเบ "Devel::NYTProf", เบซเบผเบทเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบฑเปเบเบเบญเบเบเบตเป, เบซเบผเบทเบเบฒเบเบเบตเบฅเบฐเบเบปเบ Unix.
"เปเบงเบฅเบฒ" เบเบปเบเบเบฐเปเบซเบเบ, เบญเบฑเบเปเบเบเปเปเบเบฒเบกเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก. เปเบเบดเปเบเบเบทเปเบเบเบฒเบเบเบญเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเบฒเบงเบเบงเปเบฒ
เบเบญเบ benchmarking เปเบฅเบฐเปเบกเบเบนเบ profileing, เปเบฅเบฐเปเบเบฐเบเปเบฒเปเบซเปเบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบก.
ONE เบเบฑเปเบเบเบญเบเบเบต FORWARD
เบเปเปเปเบ, เปเบเปเบเบงเบเบเบฒเปเบเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ เบฎเปเบญเบ เบเบธเบเบเปเบฒเบเป, (เบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบฅเบฐเบซเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ
เบเปเบฒ), เบเปเบฝเบเบฅเบฐเบซเบฑเบเบเปเบงเบเบเบงเบฒเบกเบเบฑเปเบเปเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบฅเปเบเปเบงเบเบถเปเบ. เบเบฒเบโเบเปเบฒโเปเบเปโเบชเบฐโเบเบฑเบโ
เบเบญเบโเปเบงโเบเบฒเบโเบเบงเบโเบเบธเบกโ, เปเบเบฑเปเบโ: "เบเบฒเบโเปเบเปเบโเบฅเบปเปเบกโ" เบเบฐโเบฎเบฑเบโเบเบฐโเบเบฑเบโเบงเปเบฒโเบเปเปโเบกเบตโเบเบฒเบโเบเปเบฝเบโเปเบเบโเบเบตเปโเบเปเปโเบกเบตโเบเบฒเบโเบเปเบฝเบโเปเบเบโเปเบเปโ. เบกเบฑเบเบเบทเบเบฑเบ
เบเปเบฒเบเบเบตเปเบเบฐ fiddle เบเบตเปเบเบตเปเปเบฅเบฐ fiddle เบขเบนเปเบเบตเปเบเบฑเปเบ - เบขเปเบฒเบเปเบฝเบเปเบเบเบซเบผเบฒเบเปเบเบตเบเปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบซเบผเบทเบเปเบฒเบเบญเบฒเบเบเบฐ
เบเปเปเบเบปเปเบเบเบปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบ เบเปเป เปเบเบฑเบโเบเบฒเบโเบเปเบฒ.
เบเบปเบเบญเบทเปเบ เบเบฑเปเบเบเบญเบเบเบต เบเปเบฒเบเบเบฒเบ
เบกเบฑเบเบเปเปเบเบฝเบเบเปเบเบตเปเบเบฐเปเบงเบปเปเบฒเบงเปเบฒ: "เบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบฅเปเบเปเบง", เบเปเบฒเบเบเปเบญเบเบเบงเบเปเบเบดเปเบเบกเบฑเบ. เปเบฅเปเบเบเบทเบเปเปเป
เบฅเบฐเบซเบฑเบเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบเบญเบ benchmarking เบซเบผเบทเปเบกเบเบนเบ profileing, เบเบฒเบเบเบฑเปเบเบเบญเบเบเปเบฒเบญเบดเบเบเปเบฒเบเปเบเบดเบ,
เปเบฅเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบซเบกเปเปเบเปเบเปเบฒเปเบเบตเบเบเบฒเบ เบเบฝเบงเบเบฑเบ เบงเบฝเบเบเบฒเบ in เบซเบเปเบญเบ เบเบตเปเปเบเปเปเบงเบฅเบฒ. เบเปเบงเบโเบเบฐโเบขเบฑเบโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโเบเบญเบโเบเปเบฒเบโเปเบฅเบฐโ
เบเปเบณ...
เบเบปเปเบงเปเบ GUIDELINES
เบชเบดเปเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบกเปเบเปเบเบทเปเบญเบเบทเปเบเปเบฒเบงเปเบฒเบเปเปเบกเบตเบชเบดเปเบเบเบฑเปเบเบเปเบฒเบงเปเบเบฑเบ
"Golden Bullet", เบเบฑเปเบเปเบกเปเบเปเบซเบเบเบปเบเบเบตเปเบเปเปเบกเบตเบเบปเบเบฅเบฐเบเบฝเบ, เบเบฝเบเปเบเปเบเปเบฒเปเบเบฐเบเปเบฒ.
เบกเบฑเบเปเบเบฑเบเบเบตเปเบเบฑเบเปเบเบเบงเปเบฒเบฅเบฐเบซเบฑเบ inline เบเบฐเปเบงเบเบงเปเบฒเบเบฒเบเปเบญเบตเปเบเปเบเบ subroutine เบซเบผเบทเบงเบดเบเบตเบเบฒเบ,
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบเปเบฒเปเบเปเบเปเบฒเบเบซเบเปเบญเบ, เปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเปเปเปเบชเบเบเบญเบเบซเบเปเบญเบ
เบฎเบฑเบเบชเบฒเปเบเปเปเบฅเบฐเบกเบฒเปเบเบเปเบฒเปเบเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบซเบผเบฒเบเบเบงเปเบฒเปเบเบปเปเบฒ - เบเปเปเบกเบตเบชเบดเปเบเบเบฑเปเบเบเปเบฒเบงเปเบเบฑเบ
เบญเบฒเบซเบฒเบเบเปเบฝเบเบเบฃเบต. เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบญเบเบซเบฒเบญเบปเบเบเบฐเบเบญเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบกเบฑเบเบชเบฒเบกเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ
เปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบงเปเปเบเปเบเบเบชเปเบฒเบ hash, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฝเบเปเบเปเปเบเบดเปเบเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบกเปเบ
เบเปเบฒเบเบปเบ, เปเบเบเบเบตเปเบเบฐ loop เบเปเบฒเบ array เบเบฑเบเบซเบกเบปเบเปเบเบเปเบเป grep() เบเบปเบงโเบขเปเบฒเบ. เบเปเบญเบ()
เบญเบฒเบเบเบฐ (เบซเบผเบฒเบ) เปเบงเบเบงเปเบฒ grep() เปเบเปโเบเปเปโเบกเบตโเบเบงเบฒเบกโเบเปเบฝเบโเปเบเบโเปเบเป, เบเบฑเปเบโเบเบฑเปเบโเบเปเบฒเบโเบกเบตโเบเบฒเบโเปเบฅเบโเบเปเบฝเบโเปเบโเบญเบตเบโเปเบเบทเปเบญโเบซเบเบถเปเบ
เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ. เบฅเบฐเบซเบฑเบเบเบญเบเบเปเบฒเบเบญเบฒเบเบกเบตเปเบชเบฑเปเบเบเบตเปเบเบฐเปเบเปเปเบงเบฅเบฒ 0.01 เบเบญเบเบงเบดเบเบฒเบเบตเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบ
เปเบเบซเบฒเบกเบฑเบ 1,000 เปเบเบทเปเบญ, เบเปเบญเบเบเปเบฒเบเบญเบฒเบเบเบฐเบขเบนเปเปเบเปเบเบเบเบฒเบ parsing เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฅเปเบเบฐเบซเบเบฒเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ
เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบกเบตเบเบฒเบเบเบฑเบเบเปเบฒ 10 เบงเบดเบเบฒเบเบตเปเบฅเปเบง, เบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบฅเบฐเบซเบฑเบเบเบฝเบง, เปเบฅเบฐเบเปเบฒเบเปเบฒเบ
เปเบเบซเบฒเบชเบฒเบเบเบฑเปเบ 100,000 เปเบเบทเปเบญ, เปเบเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเปเบฒเบเบเบฐเบเปเบฒเบฅเบปเบเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบเบเบตเปเบเปเปเบเบปเบเบเบฒเบ.
เบเบฒเบโเบเปเบฒโเปเบเปโเปเบเบโเบเบฒเบโเบเปเบญเบโเปเบเบฑเบโเบชเปเบงเบโเบซเบเบถเปเบโเบเบญเบโเบเบฒเบโเบเบฑเบโเบฅเบฝเบโเบเบญเบโเบเปเบฒเบโเปเบเบฑเบโเบงเบดโเบเบตโเบเบตเปโเบกเบตโเบญเปเบฒโเบเบฒเบโเบเบตเปโเบเบฐโเปเบเปโเบฎเบฑเบโเบชเบดเปเบโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบขเปเบฒเบโเปเบเปโเบเบดเบโ,
เปเบเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฐเบเปเบฒเบเบงเปเบฒเบเบฒเบเบเปเปเบชเปเบฒเบเปเบ เบเบปเบงเบญเบฑเบเบชเบญเบ "cmp" เปเบฅเบฐ numeric " <=>" เบเบฑเบ
เบเบนเปเบเบฐเบเบญเบเบเบฒเบ. เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบซเบผเบฒเบ passes เปเบเปเบฅเบเบฐเบเปเปเบกเบนเบเบเบญเบเบเปเบฒเบ, เบเบปเบงเบเบตเปเบงเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบ
เปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเบเบฑเบโเบฅเบฝเบโเบเบตเปโเบเบฐโเบกเบฒโเปเบเบดเบโเบเบฐโเบชเบดเบโเบเบดโเบเบฒเบโเบซเบผเบฒเบโเบเบถเปเบโ, เปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบตเปโเบฎเบนเปโเบเบฑเบโเปเบเบฑเบ "OMโ" (Orcishโ
Maneuver) เปเบเบทเปเบญ cache เบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบฅเปเบงเบเบซเบเปเบฒ. เบเบฒเบเบเบปเปเบเบซเบฒเบเบฒเบเบเบงเบฒเบกเบเปเบฒ, เปเบเบเบฐเบเบฐเบเบตเปเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบต, เบชเบฒเบกเบฒเบ
เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบฑเบเปเบซเบผเปเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบปเบเปเบเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบซเปเบเปเบฒเบเบเปเปเบกเบนเบเบชเบญเบเบเบฑเปเบ - เบเบฒเบเบเบดเบเบเบฑเปเบเบเบฑเปเบเบเบฝเบง
cache, เปเบฅเบฐเบเบฑเปเบเบเบฝเบงเปเบเบทเปเบญเบเบฑเบเบฎเบฝเบเบเปเปเบกเบนเบ. เบเบฒเบโเบเปเบฒโเปเบเป "pack()" เปเบเบทเปเบญโเบเบถเบโเบญเบญเบโเบเปเบฒโเบเบฒเบกโเบเบฒเบโเบเบฑเบโเปเบฅเบทเบญเบโเบเบตเปโเบเปเบญเบโเบเบฒเบโ
เปเบเบปเปเบฒเปเบเปเบเบชเบฐเบเบฃเบดเบเบเบตเปเบชเบญเบเบเปเบญเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบงเบดเบเบตเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบเบฒเบเบชเปเบฒเบเบชเบฒเบเบเบฝเบงเปเบเบทเปเบญเบเบฝเบเบเบฝเบ,
เปเบเบเบเบตเปเบเบฐเปเบเปเบฅเบฐเบซเบฑเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบซเบผเบฒเบ, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบกเบฒเบเบเบฐเบเบฒเบ, เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ
เปเบ "c" เปเบฅเบฐเปเบง, perl "sort()" เบเบฑเบเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบปเบเบเบฐเบฅเบดเบ, เปเบฅเบฐเปเบเบฑเบเบเบทเปเบเบเบฒเบเบเบญเบ "GRT"
(Guttman Rossler Transform). เบเบฒเบเบเบฐเบชเบปเบกเบชเบฒเบเบเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเป "GRT" เบเปเบฒเบฅเบปเบ, เบเบฝเบเปเบเป
เปเบเบฑเบโเบชเบฐโเบฅเบฑเบโเบชเบฑเบโเบเปเบญเบโเบเบปเปเบโเบเบฝเบโเปเบเบตเบโเปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบตโเบเบญเบโเบเบปเบโ.
เบชเปเบฒเบฅเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเปเบเป backends เบเบฒเบเบเปเปเบกเบนเบ, namespace "DBIx" เบกเบฒเบเบเบฐเบเบฒเบเปเบเปเบเบฐเบเบฒเบเบฒเบกเบเปเบงเบ
เบเบฑเบเบเบฒเบเบฎเบฑเบเบชเบฒเบชเบดเปเบเบเบตเป nippy, เบเปเปเปเบกเปเบเบขเปเบฒเบเบซเบเปเบญเบเปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบฐเบเบฒเบเบฒเบก เบเปเป เบชเบญเบเบเบฒเบกเบเบฒเบเบเปเปเบกเบนเบเบเบปเบเบเปเบงเบฒ
เปเบงเบฅเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเปเบซเบผเปเบฒเบชเบธเบ, เปเบเปเบญเปเบฒเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเบกเบฒเบเปเบญเบกเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ.
เปเบเบเบฑเบเบเบฒเบเบฑเบเบซเบฒเบซเบผเบฒเบเบขเปเบฒเบเบเบตเปเบเบนเปเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเบฑเบเบเบฒเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบงเบเบฅเบฐเบงเบฑเบเปเบกเปเบ
เปเบเบทเปเบญเปเบเปเบเบปเบงเบเบถเบ "SQL" เบชเบฐเปเปเบต เปเบฅเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเบธเบเบเปเปเบกเบนเบเบเปเบญเบเบเบฒเบเบเบถเบเบเปเปเบกเบนเบเปเบกเบทเปเบญเบญเบฑเบเบเบตเปเบญเบฒเบเบเบฐ
เบเบดโเบชเบนเบโเปเบเปโเบเบฝเบโ. เบเบฒเบเปเบเบเปเบเบฅเปเบเบฐเปเบฒเบเปเบซเบเปเปเบเบเบเบฒเบเบกเบญเบเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเบซเบผเบฒเบเบญเบฑเบเปเบเบทเปเบญเบงเบดเปเบเบฒเบฐ
เปเบเบฅเปเบเบฝเบง, เบเบฒเบเบเปเบฒเปเบเปเปเบงเบปเปเบฒเบงเปเบฒ "POE", "เบเบฐเบเบนเป" เบซเบผเบท "เบชเปเบญเบก" เบเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบงเบดเบเบตเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบญเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ.
เบเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบเบฐเบเบฒเบเบญเบ "CPU" เบเบตเปเบกเบตเบขเบนเป, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฑเบเบเบดเบเบเบตเปเปเบกเปเบ fraught เบเบฑเบ
เบเบฑเบโเบซเบฒโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโเปเบฅเบฐโเบฎเบฝเบโเบฎเปเบญเบโเปเบซเปโเบกเบตโเบเบงเบฒเบกโเปเบญเบปเบฒโเปเบโเปเบชเปโเบชเบนเบโเปเบโเบฅเบฐโเบญเบฝเบโ.
เบเบธเบเปเบเปเบฅเบฐเบเบตเบกเบตเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบชเบฐเปเบเบฒเบฐเปเบฅเบฐเบเปเปเบเบปเบเปเบงเบฑเปเบเบซเบเบถเปเบเบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบ, เปเบฅเบฐเบเปเปเบกเบต
เบเบฒเบเบเบปเบเปเบเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเบฒเบเบงเบเบซเบเปเบญเบเบซเบเบถเปเบเปเบฅเบฐเบเบญเบเบซเบฒเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบเบเบชเบฐเปเบเบฒเบฐ, เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเบเบตเปเบงเปเบฒเบเบฒเบเบเบฝเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเปเปเปเบกเปเบเบงเบดเบเบฐเบเบฒเบชเบฒเบเบเบตเปเปเบเปเบเบญเบ, เปเบฅเบฐเปเบเบฑเบเบซเบเบฑเบ
เบเบงเบเปเบฎเบปเบฒเบกเบฑเบเปเบเป Perl เบซเบผเบฒเบ - TMTOWTDI.
เบกเบฒเบเบเบฐเบเบฒเบ
เบเบตเปเปเบกเปเบเบเบฒเบเบเบปเบงเบขเปเบฒเบเปเบเบทเปเบญเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบกเบทเบเบฒเบเบเบฝเบเบเบฝเบเบเบญเบ Perl.
เบเบฒเบเบกเบญเบ เปเบฒเบ เปเบฅเบฐ เบเบฒเบเบญเปเบฒเบเบญเบดเบ เบเบปเบงเปเบ
เบเปเบญเบเปเบเปเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเปเบงเบเปเบซเบเปเปเบเปเปเบซเบฑเบเบฅเบฐเบซเบฑเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒ, (เบซเบผเบทเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒ), เบเบตเป:
เบเปเบฒ ($obj->{_ref}->{_myscore} >= $obj->{_ref}->{_yourscore} ) {
...
เบฅเบฐเบซเบฑเบเบเบฐเปเบเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฒเบเบญเปเบฒเบเปเบเปเป, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบงเบฒเบกเบญเปเบญเบเปเบซเบงเบซเบผเบฒเบเบเปเปเบเบฒเบเบเบดเบกเบเบดเบ,
เปเบฅเบฐเบกเบฑเบเบเบฐเปเบเปเบเบเบงเปเบฒเบเบตเปเบเบฐเบเบฐเบเบดเปเบชเบเบเบปเบงเปเบเบขเปเบฒเบเบเบฐเปเบเปเบ. เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเปเบฒเบเบเบฝเบ stepping เปเบเป
เบเบฑเบเบซเบฒเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบฑเบเบเบดเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเปเบเบเบงเบฑเบเบเบธเปเบเบทเปเบญ encapsulate เบเบปเบงเปเบ
เปเบเบปเปเบฒเปเบเบดเบเปเบเบเบเปเบฒเบเบงเบดเบเบตเบเบฒเบ, เปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเปเบฒเบเบงเบฑเบเบเบธ. เปเบโเบเบตเปโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเบฝเบโเปเบเปโเบเบถเบโเบชเบฒโเบซเบฒโเบฅเบทโ
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบเบเบญเบเบเบฒเบเปเบฅเบทเบญเบ, เปเบฅเบฐเบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเบเบตเปเบกเบตเบเบปเบเบเบฐเบเบปเบเบเบฐเบชเบดเบเบเบดเบเบฒเบ. เบเบงเบโเปเบฎเบปเบฒโเบชเบฒโเบกเบฒเบ
เปเบเบดเปเบเบงเปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบญเปเบฒเบเบญเบดเบเบเบตเป, เบกเบตเบเปเบฒเปเบเปเบเปเบฒเบเปเบเปเปเบเบเบเบฒเบเปเบชเปเบฅเบฐเบซเบฑเบเบเบฝเบเบเบฝเบ
เปเบเบฅเปเปเบฅเบฐเปเบฅเปเบเบเบฒเบเบเบปเบเบชเบญเบ "Benchmark".
# เบเบฒเบเบญเปเบฒเบเบญเบตเบ
#!/usr/bin/perl
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป Benchmark;
$ref เบเบญเบเบเปเบญเบ = {
'เบญเปเบฒเบเบญเบตเบ' => {
_myscore => '100 + 1',
_youscore => '102 - 1' ,
},
};
เปเบงเบฅเบฒเปเบซเบผเบปเปเบฒเบเบตเป(1000000, {
'เปเบเบเบเบปเบ' => เบเปเบญเบ {
$x เบเบญเบเบเปเบญเบ = $ref->{ref}->{_myscore} . $ref->{ref}->{_youscore} ;
},
'เบเบฒเบเบญเปเบฒเบเบญเบตเบ' => เบเปเบญเบ {
$ref เบเบญเบเบเปเบญเบ = $ref->{ref};
$myscore เบเบญเบเบเปเบญเบ = $ref->{_myscore};
$youscore เบเบญเบเบเปเบญเบ = $ref->{_youscore};
$x เบเบญเบเบเปเบญเบ = $myscore . $youscore;
},
});
เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบงเบฑเบเปเบเบเปเบฅเบเบฐเปเบงเบฅเบฒเปเบเบซเบเบถเปเบเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบฝเบเบเปเปเบเบทเปเบญเปเบซเปเบเบปเบงเปเบฅเบ
เบเบปเบเบฅเบปเบเปเบเบฑเบเบเบปเบงเปเบฅเบเบชเบฐเปเบฅเปเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเปเบเปเบฅเบฐเปเบฅเบเบฐเบเบฐเปเบซเบเบฑเบเบเบตเบเบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบเบเปเบญเบ
เบเบฒเบเบเปเบฝเบเปเบเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบเบปเบเบเบฐเบเบปเบเบเบญเบเบเบฒเบเบเบฑเบเปเบเปเบเบชเปเบฒเบฅเบฑเบ "CPU" เบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบฅเบฐ
เบเบปเบงเบขเปเบฒเบเปเบเบเบงเบดเบเปเบเบทเบญเบเปเบฒเบ. เปเบฅเปเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบดเบเบชเปเบฒเบฅเบฑเบเบซเบเบถเปเบเบฅเปเบฒเบ iterations, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เปเบเบดเปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบปเบเบฅเบฒเบเบเบฒเบเปเบเบเปเบกเบเบนเบ "Benchmark", เปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเปเบเปเบกเปเบ
เบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเบชเบธเบ.
$> perl dereference
Benchmark: เบเปเบฒเบเบปเบเปเบงเบฅเบฒ 1000000 iterations of dereference, direct...
dereference: 2 wallclock secs (1.59 usr + 0.00 sys = 1.59 CPU) @ 628930.82/s (n=1000000)
เปเบเบเบเบปเบ: 1 wallclock secs (1.20 usr + 0.00 sys = 1.20 CPU) @ 833333.33/s (n=1000000)
เบเบงเบฒเบกเปเบเบเบเปเบฒเบเปเบกเปเบเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบ deferencing เปเบกเปเบเบเปเบฒเบเบงเปเบฒ. เปเบเบเบฐเบเบฐเบเบตเปเบกเบฑเบเบเบธเปเบกเบเบญเบ
เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเปเบเบเบชเบฐเปเบฅเปเบเบเบญเบ 628,930 เปเบเบทเปเบญเบเปเปเบงเบดเบเบฒเบเบตเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบงเบดเบเบตเบเบฒเบเปเบเบเบเบปเบ
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบก 204,403 เปเบเบทเปเบญ. เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเปเบญเบเบงเปเบฒเบกเบต
เบกเบตเบซเบผเบฒเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบฝเบเปเบเบเปเบเปเบเบฒเบเปเบเบปเปเบฒเบซเบฒเบเบปเบงเปเบเปเบเบเบเบปเบเบซเบผเบฒเบเบเบฑเปเบ, เปเบฅเบฐ
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบกเบฑเบเปเบเบฑเบเบเบฒเบขเปเบฒเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบฑเบเปเบกเปเบเบซเบเปเบญเบเปเบง. เบเปเบฒเบเบฒเบกเบเบฑเบเบเบปเบเบขเบนเปเบเปเปเบงเปเบฒ
เบเบปเบงเบเบดเบเปเบฅเปเบงเบเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบตเปเบกเปเบเบเบธเปเบกเบเปเบฒเบเบฑเบเบชเบฒเบเบเบฒ, เบซเบผเบทเบเบฒเบเบชเบนเบเปเบชเบเบเบฒเบเบฎเบฑเบเบชเบฒ.
เบเบปเปเบเบซเบฒ เปเบฅเบฐ เบเบปเบเปเบเบ or tr
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบฐเบเบฃเบดเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเปเบ, เปเบเบเบฐเบเบฐเบเบตเป regex เปเบเบทเบญเบเบชเบฐเปเบซเบกเบตเบเบฐเบกเบตเบซเบผเบฒเบ
เบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเบซเบผเบฒเบ, "tr", เปเบเบทเปเบญเบเบกเบทเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบฅเบทเปเบญเบเป, เบเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฐเปเบซเบเบ. เบชเบฐเบเบฒเบเบฐเบเบฒเบเบซเบเบถเปเบเบญเบฒเบเบเบฐเปเบเบฑเบ
เปเบเบเบเบตเป vowels เบเบฑเบเบซเบกเบปเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบเบญเบทเปเบ. เบเบฒเบเปเบเปเปเบ regex เบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
$str =~ s/[aeiou]/x/g
เบเบฒเบเปเบฅเบทเบญเบ "tr" เบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
$str =~ tr/aeiou//
เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเปเบเบฅเปเบเบปเบเบชเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเปเบเปเบงเบเบตเปเบชเบธเบ,
เบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบ $STR เบเบปเปเบงเปเบฅเบเปเบเบทเปเบญเบเปเบฒเบซเบเบปเบเปเบซเปเบเบปเบงเปเบ "my $str" เปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบ perl
เบเบฐเบเบฒเบเบฒเบกเบเบฑเบเบเบธเบเบงเบฝเบเบเบฒเบเปเบเบเบถเปเบเปเบซเปเปเปเบฒเบฐเบชเบปเบกเปเบเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒเบกเบฑเบเบเบทเบเบกเบญเบเปเบฒเบเปเบซเปเบเบฝเบเบเบฑเปเบเบเบฝเบงเปเบเบปเปเบฒเบเบฑเปเบ.
# regex-เปเบ
#!/usr/bin/perl
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป Benchmark;
$STR เบเบญเบเบเปเบญเบ = "$$- this and that";
เปเบงเบฅเบฒเปเบซเบผเบปเปเบฒเบเบตเป(1000000, {
'sr' => เบเปเบญเบ { เบเบญเบเบเปเบญเบ $str = $STR; $str =~ s/[aeiou]/x/g; เบเบฑเบเบเบทเบ $str; },
'tr' => เบเปเบญเบ {เบเบญเบเบเปเบญเบ $str = $STR; $str =~ tr/aeiou//; เบเบฑเบเบเบทเบ $str; },
});
เปเบฅเปเบเบฅเบฐเบซเบฑเบเปเบซเปเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
$> perl regex-transliterate
Benchmark: เบเปเบฒเบเบปเบเปเบงเบฅเบฒ 1000000 iterations of sr, tr...
sr: 2 wallclock secs (1.19 usr + 0.00 sys = 1.19 CPU) @ 840336.13/s (n=1000000)
tr: 0 wallclock secs (0.49 usr + 0.00 sys = 0.49 CPU) @ 2040816.33/s (n=1000000)
เบชเบฐเบเบฑเบ "tr" เปเบกเปเบเบเบนเปเบเบฐเบเบฐเบเบตเปเบเบฑเบเปเบเบ. เบเบฒเบเปเบเปเปเบเบซเบเบถเปเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบ, เบญเบตเบเบญเบฑเบเบซเบเบถเปเบเปเบกเปเบเปเบง - เปเบฅเบฐ
เบกเบฑเบโเปเบเบฑเบโเบเบฒเบโเปเบฅเบทเบญเบโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบกโเบเบญเบโเปเบเบโเบเบฒเบโเบเบตเปโเบเบฐโเบเปเบฒโเปเบเปโ.
เบเบงเบเปเบเบดเปเบเปเบญเบเบฐเบชเบฒเบ "Benchmark" เบชเปเบฒเบฅเบฑเบเปเบเบฑเบเบเบดเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบทเปเบกเบญเบตเบ.
เบเบฒเบเบเบฐเบเบญเบเบเปเปเบกเบนเบ เปเบเบทเปเบญเบเบกเบท
เบฅเบฐเบซเบฑเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฑเบเบเปเบญเบเบเบฐเบชเบฐเบซเบเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเป profiler เบชเบฒเบกเบฒเบเบเบฐเบฅเบดเบเปเบเป
เบชเบฐเบเบดเบเบดเบเบฒเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเบงเปเบฒเบเบเบงเบฒเบเบเบงเปเบฒ. เบเบปเบงเบขเปเบฒเบเบเบตเปเปเบเปเปเบเบเบเบฒเบ "wordmatch" เบเบตเปเบเปเบฒเบเบเบฒเบ
เปเบเบดเปเบ parses เปเบเบฅเปเบเปเบญเบเบเปเปเบกเบนเบเปเบซเปเปเบฅเบฐ spews เบญเบญเบเบเบปเบเบฅเบฒเบเบเบฒเบเบชเบฑเปเบเบเปเบฝเบงเบเบฑเบเปเบเบทเปเบญเปเบ.
# เบเบณเบชเบฑเบ
#!/usr/bin/perl
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
=head1 NAME
filewords - เบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเบฒเบชเบฑเบเบเบญเบเปเบเบฅเปเบเปเบญเบเบเปเปเบกเบนเบ
=head1 เบชเบฐเบซเบผเบธเบเบชเบฑเบเบฅเบงเบก
filewords -f inputfilename [-d]
=head1 เบฅเบฒเบเบฅเบฐเบญเบฝเบ
เปเบเบโเบเบฒเบโเบเบตเปโเบญเบฐโเบเบธโเบเบฒเบโเบเบทเปโเปเบเบฅโเปโเบเบตเปโเปเบเปโเบฎเบฑเบโ, เบฅเบฐโเบเบธโเปเบงเปโเบเปเบงเบ C<-fโ>โ, เปเบฅเบฐโเบชเบฐโเปเบเบ aโ
เบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเบฒเบเบเบฒเบเบเบญเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบเบตเปเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบเบเบฑเปเบ. เปเบเปเบเบธเปเบก C<-d> เปเบเบทเปเบญเปเบเบตเบเปเบเปเบเบฒเบ
เปเบเปเบเบฑเบเบซเบฒเบเปเปเบเบงเบฒเบก.
= เบเบฑเบ
เปเบเป FileHandle;
เปเบเป Getopt::Long;
$debug เบเบญเบเบเปเบญเบ = 0;
$file เบเบญเบเบเปเบญเบ = '';
$result เบเบญเบเบเปเบญเบ = GetOptions (
'เบเบตเบเบฑเบ' => \$debug,
'file=s' => \$file,
);
die("args เบเปเปเบเบทเบเบเปเบญเบ") เปเบงเบฑเปเบเปเบชเบเปเบเป $result;
เปเบงเบฑเปเบเปเบชเบเปเบเป ( -f $file ) {
die("Usage: $0 -f filename [-d]");
}
เบเบญเบเบเปเบญเบ $FH = FileHandle->new("< $file") เบซเบผเบท die("เบเปเปเบชเบฒเบกเบฒเบเปเบเบตเบเปเบเบฅเป($file): $!");
$i_LINES เบเบญเบเบเปเบญเบ = 0;
$i_WORDS เบเบญเบเบเปเบญเบ = 0;
%count = ();
@lines เบเบญเบเบเปเบญเบ = <$FH>;
foreach my $line (@lines ) {
$i_LINES++;
$line =~ s/\n//;
my @words = เปเบเบ(/ +/, $line);
$i_words เบเบญเบเบเปเบญเบ = scalar(@words);
$i_WORDS = $i_WORDS + $i_words;
debug("line: $i_LINES เบชเบฐเปเบญเบ $i_words words: @words");
$i_word เบเบญเบเบเปเบญเบ = 0;
foreach my $word ( @words ) {
$i_word++;
$count{$i_LINES}{spec} += matches($i_word, $word, '[^a-zA-Z0-9]');
$count{$i_LINES}{only} += matches($i_word, $word, '^[^a-zA-Z0-9]+$');
$count{$i_LINES}{cons} += matches($i_word, $word, '^[(?i:bcdfghjklmnpqrstvwxyz)]+$');
$count{$i_LINES}{vows} += matches($i_word, $word, '^[(?i:aeiou)]+$');
$count{$i_LINES}{caps} += matches($i_word, $word, '^[(AZ)]+$');
}
}
เบเบดเบกเบเบปเบเบฅเบฒเบเบเบฒเบ(%เบเบฑเบ);
เบเบฒเบเปเบเปเบเบเบฑเบเบเปเบญเบ {
$i_wd เบเบญเบเบเปเบญเบ = shift;
my $word = shift;
$regex เบเบญเบเบเปเบญเบ = shift;
เบเบญเบเบเปเบญเบ $ has = 0;
เบเปเบฒ ($word =~ /($regex)/ ) {
$ has++ เบเปเบฒ $1;
}
debug("เบเบณเบชเบฑเบ: $i_wd ".($has ? 'match' : 'เบเปเปเบเบปเบเบเบฑเบ')." chars: /$regex/");
เบเบฑเบเบเบทเบ $ has;
}
เบเบปเบโเบฅเบฒเบโเบเบฒเบโเบเปเบญเบ {
เบฅเบฒเบเบเบฒเบ % เบเบญเบเบเปเบญเบ = @_;
%rep เบเบญเบเบเปเบญเบ;
foreach my $line (เบเบฐเปเบ %report ) {
foreach $key เบเบญเบเบเปเบญเบ (เบเบฐเปเบ %{ $report{$line} } ) {
$rep{$key} += $report{$line}{$key};
}
}
$ เบฅเบฒเบเบเบฒเบเบเบญเบเบเปเบญเบ = qq|
เบฅเบฒเบเบเบฒเบ $0 เบชเปเบฒเบฅเบฑเบ $file:
เปเบเบงเปเบเปเบเบฅเป: $i_LINES
เบเปเบฒเบเบตเปเบขเบนเปเปเบเปเบเบฅเป: $i_WORDS
เบเปเบฒเบเบตเปเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบ (เบเปเปเปเบกเปเบเบเปเบฒ): $i_spec
เบเปเบฒเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบ (เบเปเปเปเบกเปเบเบเปเบฒ): $i_only
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: $i_cons
เบเปเบฒเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบปเบงเบเบดเบกเปเบซเบเป: $i_caps
เบเปเบฒเบเบตเปเบกเบตเบเบฝเบเปเบเป vowels: $i_vows
|;
เบเบฑเบเบเบทเบ $report;
}
เปเบเปเบเบฑเบเบซเบฒเบเปเบญเบ {
my $message = shift;
เบเปเบฒ ( $debug ) {
เบเบดเบก STDERR "DBG: $message\n";
}
}
เบญเบญเบเบเบฒเบ 0;
เบเบฑเบเบเบฐเบเบฒ::DProf
เปเบกเบเบนเบเบเบตเปเปเบเบปเบฒเบฅเบปเบเบเบตเปเปเบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบ de-facto เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบ Perl เบชเปเบฒเบฅเบฑเบเบซเบผเบฒเบเบเปเบงเบฒ
เบเบปเบเบชเบฐเบงเบฑเบ, เปเบเปเปเบเปเบเบทเบเบเปเบฝเบเปเบเบเบเปเบงเบเปเบกเบเบนเบเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเปเบเปเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบทเบเปเบเบเปเบญเบ
เบชเบฐเบเบฐเบงเบฑเบเบเบต 21. เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเปเบเบฐเบเปเบฒเปเบซเปเบเบฐเปเบกเบตเบเปเบเบทเปเบญเบเบกเบทเบเบญเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบเปเบขเปเบฒเบ
เบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบเบเบตเปเบเบตเปเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป CPAN เบขเบนเปเปเบเบเบทเปเบเบเบฒเบเบเบญเบเปเบญเบเบฐเบชเบฒเบเบเบตเป, (เปเบฅเบฐเบเบฐเบเบธเบเบฑเบ
Devel::NYTProf เปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบญเบฒเบงเบธเบเบเบญเบเบเบฒเบเปเบฅเบทเบญเบ - เปเบเบดเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป), เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบขเปเบฒเบเปเบงเบงเบฒ
เบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบ Devel::DPF เบเปเบฒเบญเบดเบ, เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบกเบท Perl profile. เบเปเบฒเปเบเบตเบเบเบฒเบ
เปเบเบเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบเบญเบ "Devel::DPF" เปเบเบเปเบเปเบเบธเปเบก "-d" เปเบเบเปเบฒเบชเบฑเปเบ
เปเบชเบฑเปเบ.
$> perl -d:DProf wordmatch -f perl5db.pl
<...เบซเบผเบฒเบเปเบชเบฑเปเบเบเบทเบเบเบฑเบเบญเบญเบ...>
เบเบปเบเบฅเบฒเบเบเบฒเบ wordmatch เบชเปเบฒเบฅเบฑเบ perl5db.pl:
เปเบชเบฑเปเบโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: 9428โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเปเบเบฅโเปโ: 50243โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 20480โ
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 7790โ
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: 4801
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบเบดเบกโเปเบซเบเปโ: 1316โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเป vowelsโ: 1701โ
"Devel::DPF" เบเบฐเบฅเบดเบเปเบเบฅเปเบเบดเปเบชเบ, เปเบญเบตเปเบเบงเปเบฒ tmon.out เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เปเบฅเบฐเปเบเบฅเปเบเบตเปเบเบทเบเบญเปเบฒเบ
เปเบเบเปเบเบเบเบฒเบ "dprofpp", เปเบเบดเปเบเปเบเปเบเบทเบเบเบดเบเบเบฑเปเบเปเบฅเปเบงเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบ "Devel::DPF"
เบเบฒเบโเปเบเปโเบเบฐโเบเบฒเบโ. เบเปเบฒเบเปเบฒเบเปเบเบซเบฒ "dprofpp" เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบฅเบทเบญเบ, เบกเบฑเบเบเบฐเบญเปเบฒเบเบเปเปเบเบงเบฒเบก tmon.out เบเบทเปเบเปเบ
เปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบเบฐเบเบธเบเบฑเบเปเบฅเบฐเบเบฐเบฅเบดเบเบเบปเบเบฅเบฒเบเบเบฒเบเบชเบฐเบเบดเบเบดเบเบตเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบเบญเบเบกเบฐเบเบธเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบเปเบฒเบ
เปเบเบเบเบฒเบ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเบญเบฒเบเบเบฐเปเบเปเปเบงเบฅเบฒเปเบฅเบฑเบเบเปเบญเบ.
$> dprofpp
เปเบงเบฅเบฒเบเปเบฒเบเปเบเบเบฑเบเปเบปเบ = 2.951677 เบงเบดเบเบฒเบเบต
เปเบงเบฅเบฒเบเบนเปเปเบเป+เบฅเบฐเบเบปเบ = 2.871677 เบงเบดเบเบฒเบเบต
เปเบงเบฅเบฒเบเบดเปเบชเบ
%Time ExclSec CumulS #Calls sec/call Csec/c เบเบทเป
102. 2.945 3.003 251215 0.0000 0.0000 เบซเบผเบฑเบ:: matches
2.40 0.069 0.069 260643 0.0000 0.0000 เบซเบผเบฑเบ::debug
1.74 0.050 0.050 1 0.0500 0.0500 เบซเบผเบฑเบ:: เบฅเบฒเบเบเบฒเบ
1.04 0.030 0.049 4 0.0075 0.0123 เบซเบผเบฑเบ::BEGIN
0.35 0.010 0.010 3 0.0033 0.0033 เบเบนเปเบชเบปเปเบเบญเบญเบ::as_heavy
0.35 0.010 0.010 7 0.0014 0.0014 IO::File::BEGIN
0.00 - -0.000 1 - - Getopt::Long::FindOption
0.00 - -0.000 1 - - เบชเบฑเบเบเบฒเบฅเบฑเบ::BEGIN
0.00 - -0.000 1 - - Fcntl::BEGIN
0.00 - -0.000 1 - - Fcntl::bootstrap
0.00 - -0.000 1 - - เบเบฒเบเปเบเบทเบญเบเปเบ::BEGIN
0.00 - -0.000 1 - - IO::bootstrap
0.00 - -0.000 1 - - Getopt::Long::ConfigDefaults
0.00 - -0.000 1 - - Getopt::Long::Configure
0.00 - -0.000 1 - - เบชเบฑเบเบเบฒเบฅเบฑเบ::gensym
"dprofpp" เบเบฐเบเบฐเบฅเบดเบเบเบปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเบเบดเบเบเบฐเบเปเบฒเบเบญเบ "wordmatch"
เปเบเบเบเบฒเบ. เปเบกเบเบเบธเบ, เบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบเบปเบ, เปเบงเบฅเบฒเปเบกเปเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบเบฒเบเบงเบดเปเบเบฒเบฐ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบ
เบเบตเปเปเบกเปเบเบเปเบฅเปเบฒเบเบปเปเบเบเปเบเบตเปเบเปเบฒเบเบปเบเบเบฒเบเบเปเบฒเบเบปเบเบเบปเบเบฅเบฒเบเบเบฒเบ. เบเบงเบเปเบเบดเปเบเปเบญเบเบฐเบชเบฒเบ "dprofpp" เบชเปเบฒเบฅเบฑเบ
เบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบซเบผเบฒเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบกเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ.
เปเบเบดเปเบ "Apache::DPF" เบเบตเปเปเบเบทเปเบญเบกเบเปเป "Devel::DPF" เปเบเบปเปเบฒเปเบเปเบ "mod_perl".
เบเบฑเบเบเบฐเบเบฒ::Profileer
เบฅเบญเบเบกเบฒเปเบเบดเปเบเปเบเบฃเปเบเบฃเบกเบเบฝเบงเบเบฑเบเปเบเบเปเบเปเปเบเปเบเปเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ: "Devel::Profiler", a
เบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเบเบฒเบเบเบปเบเปเบเบ Perl เปเบเบปเปเบฒเบเบฑเปเบเบชเปเบฒเบฅเบฑเบ "Devel::DPF". เบเบฒเบเบเปเบฒเปเบเปเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเปเบ
เบงเปเบฒเปเบเบเบเบตเปเบเบฐเปเบเปเบเบธเบ "-d:" เบเบดเปเบชเบ, เบเปเบฒเบเบเบถเบ "Devel::Profiler" เปเบเบเบเบปเบเปเบเบฑเบ.
เปเบกเบเบนเบเปเบเบเปเบเป "-M".
$> perl -MDevel::Profileer wordmatch -f perl5db.pl
<...เบซเบผเบฒเบเปเบชเบฑเปเบเบเบทเบเบเบฑเบเบญเบญเบ...>
เบเบปเบเบฅเบฒเบเบเบฒเบ wordmatch เบชเปเบฒเบฅเบฑเบ perl5db.pl:
เปเบชเบฑเปเบโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: 9428โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเปเบเบฅโเปโ: 50243โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 20480โ
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 7790โ
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: 4801
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบเบดเบกโเปเบซเบเปโ: 1316โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเป vowelsโ: 1701โ
"Devel::Profiler" เบชเปเบฒเบเปเบเบฅเป tmon.out เปเบเบดเปเบเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ "dprofpp"
เปเบเบโเบเบฒเบโ, เบเบฑเปเบโเบเบฑเปเบโเบเบฒเบโเบเบฐโเบขเบฑเบโเบเบฒเบโเบเปเปโเบชเปเบฒเบโเบเบญเบโเปเบเบโเบเบฒเบโเบชเบฐโเบเบดโเบเบดโเบเบฒเบโเบญเปเบฒเบโเบเบตเปโเบญเบธโเบเบดเบโเบเบปเบโ. "dprofpp"
เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ.
$> dprofpp
เปเบงเบฅเบฒเบเปเบฒเบเปเบเบเบฑเบเปเบปเบ = 20.984 เบงเบดเบเบฒเบเบต
เปเบงเบฅเบฒเบเบนเปเปเบเป+เบฅเบฐเบเบปเบ = 19.981 เบงเบดเบเบฒเบเบต
เปเบงเบฅเบฒเบเบดเปเบชเบ
%Time ExclSec CumulS #Calls sec/call Csec/c เบเบทเป
49.0 9.792 14.509 251215 0.0000 0.0001 เบซเบผเบฑเบ:: matches
24.4 4.887 4.887 260643 0.0000 0.0000 เบซเบผเบฑเบ::debug
0.25 0.049 0.049 1 0.0490 0.0490 เบซเบผเบฑเบ:: เบฅเบฒเบเบเบฒเบ
0.00 0.000 0.000 1 0.0000 0.0000 Getopt::Long::GetOptions
0.00 0.000 0.000 2 0.0000 0.0000 Getopt::Long::ParseOptionSpec
0.00 0.000 0.000 1 0.0000 0.0000 Getopt::Long::FindOption
0.00 0.000 0.000 1 0.0000 0.0000 IO::File::new
0.00 0.000 0.000 1 0.0000 0.0000 IO::Handle::new
0.00 0.000 0.000 1 0.0000 0.0000 เบชเบฑเบเบเบฒเบฅเบฑเบ::gensym
0.00 0.000 0.000 1 0.0000 0.0000 IO::File::open
เบซเบเปเบฒเบชเบปเบเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบ, เปเบเบดเปเบเบชเปเบงเบเปเบซเบเปเปเบกเปเบเบเปเบญเบเบชเบนเบเบเบฒเบเบเบดเบเปเบฅเป
เบเบตเปเบชเปเบฒเบเบเบปเบเบฅเบฒเบเบเบฒเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบฎเบนเบเปเบเบเปเบญเบเบฐเบชเบฒเบเบเบปเบเบเบฐเบฅเบดเบเปเบเปเบเบทเบเบเปเบฒเบงเบซเบฒ
เบเบทเบเบฑเบ. เปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเปเบ, เบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบเบปเบเปเบกเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบขเปเบฒเบเบเบฑเบเปเบเบเปเบเบดเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเปเบเปเปเบงเบฅเบฒ
"Devel::Profiler" เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบฅเปเบเบเบญเบเบกเบฑเบเปเบญเบ, เปเบเปเบฅเบฒเบเบเบทเปเบเบฑเบเบฎเบนเปเบชเบถเบเบงเปเบฒเบเบทเบเบเปเบญเบเบเบงเปเบฒ
somehow เบเปเบงเบฒเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบเปเบญเบเบซเบเปเบฒเบเบตเปเบเบฒเบ "Devel::DPF". เบเบปเบงเปเบฅเบ 102% เบกเบต
เบซเบฒเบเปเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ. เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบเปเปเบเบทเปเบญเบเบกเบทเปเบเบเบฒเบเบเปเบฒเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบฅเบฐ
เบฎเบฑเบเบฎเบนเปเบเปเปเบเบตเปเบฅเบฐเบเปเปเปเบชเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบ. เบซเบเปเบฒเบชเบปเบเปเบ, เบเปเบฒเบเบงเบเบเบฒเบเปเบเบชเปเบฒเบฅเบฑเบ
เปเบเปเบฅเบฐ subroutine เปเบกเปเบเบเบทเบเบฑเบเปเบเบชเบญเบเบเบปเบเบฅเบฒเบเบเบฒเบ, เบกเบฑเบเปเบกเปเบเบญเบฑเบเบเบฒเบชเปเบงเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเบฑเบ
เบเบนเปเบเบฝเบเบเบญเบ "Devel::Proviler" เบเบฝเบเบงเปเบฒ:
...เปเบฅเปเบ HTML::เบเบธเบเบเบปเบเบชเบญเบเบเบญเบเปเบกเปเปเบเบเบเบฒเบเปเบเป Devel::DProf เบชเบฐเปเบเบเบเบปเบเบเบฐเบฅเบดเบ()
เบเปเปเปเบเปเปเบงเบฅเบฒเปเบเป Devel::Profiler เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฐเบกเบฒเบ 10% เบเบญเบเปเบงเบฅเบฒเปเบกเปเบเบขเบนเปเปเบเบเบปเบเบเบฐเบฅเบดเบ().
เบเปเบญเบเบเปเปเบฎเบนเปเบงเปเบฒเบเบฐเปเบเบทเปเบญเบญเบฑเบเปเบ เปเบเป เบฅเบณ เปเบชเปเบเบญเบเบเปเบญเบเบเบญเบเบเปเบญเบเบงเปเบฒเบกเบตเบเบฒเบเบขเปเบฒเบเบเบดเบเบเบฒเบ
เบเบฑเบเบเบฐเบเบฒ::DProf. HTML::Template::output() เปเบเบฑเบเบเบฒเบเบเบปเบเบเบฐเบเบดเบญเบฑเบเปเบซเบเปเบเบตเปเบฎเบฝเบเบฎเปเบญเบ
เบเบธเบเปเบเบฒเบเบเบปเบเบชเบญเบ. เปเบเบเปเบฅเบฐเบเบตเปเบเบเปเปเบเบฒเบก, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเปเปเบ.
YMMV.
เปเบเบดเปเบ "Devel::Apache::Profiler" เปเบเบดเปเบเปเบเบทเปเบญเบกเบเปเป "Devel::Profiler" เปเบเบปเปเบฒเปเบเปเบ "mod_perl".
เบเบฑเบเบเบฐเบเบฒ::SmallProf
เปเบเปเบเปเบเบต "Devel::SmallProf" เบเบงเบเปเบเบดเปเบเปเบงเบฅเบฒเปเบฅเปเบเบเบญเบเปเบเบเบเบฒเบ Perl เบเบญเบเบเปเบฒเบเปเบฅเบฐเบเบฐเบฅเบดเบ
เบฅเบฒเบเบเบทเปเปเบเบงเบเปเปเปเบเบงเปเบเบทเปเบญเบชเบฐเปเบเบเบงเปเบฒเปเบเปเบฅเบฐเปเบเบงเบเบทเบเปเบญเบตเปเบเบเบฑเบเปเบเบทเปเบญ, เปเบฅเบฐเปเบเปเบฅเบฐเบชเบฒเบเบเบฒเบงเปเบเบปเปเบฒเปเบ
เปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโ. เบกเบฑเบเบเบทเบเปเบญเบตเปเบเบงเปเบฒเปเบเบเบเบฒเบเบชเบฐเบซเบเบญเบเบเบธเบ "-d" เบเบตเปเบเบธเปเบเปเบเบตเบเบเบฑเบ Perl เปเบเปเบงเบฅเบฒเปเบฅเปเบ.
$> perl -d:SmallProf wordmatch -f perl5db.pl
<...เบซเบผเบฒเบเปเบชเบฑเปเบเบเบทเบเบเบฑเบเบญเบญเบ...>
เบเบปเบเบฅเบฒเบเบเบฒเบ wordmatch เบชเปเบฒเบฅเบฑเบ perl5db.pl:
เปเบชเบฑเปเบโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: 9428โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเปเบเบฅโเปโ: 50243โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 20480โ
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 7790โ
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: 4801
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบเบดเบกโเปเบซเบเปโ: 1316โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเป vowelsโ: 1701โ
"Devel::SmallProf" เบเบฝเบเบกเบฑเบเบญเบญเบเปเบเบฑเบเปเบเบฅเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒ smallprof.out, เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ. เปเบเป
เบฎเบนเบโเปเบเบโเบเบญเบโเปเบเบฅโเปโเปเบเบดเปเบโเบเบทโเบเบตเปโ:
:
เปเบกเบทเปเบญเปเบเบเบเบฒเบเปเบเปเบขเบธเบเปเบเบปเบฒ, เบเบปเบเบเบฐเบฅเบดเบเบญเบฒเบเบเบฐเบเบทเบเบเบงเบเบชเบญเบเปเบฅเบฐเบเบฑเบเบฎเบฝเบเปเบเบเปเบเปเบกเบฒเบเบเบฐเบเบฒเบเปเบเบเปเปเบเบฒเบก
เบเบปเบเบเบฐเปเบซเบเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเปเบเบงเบฒเบก. เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ: เบเปเปเปเบเบเบตเปเบญเบฒเบเบเบฐเบเบฝเบเบเป:
$> cat smallprof.out | grep \d*: | เบเบฑเบ -k3 | tac | เบซเบปเบง -n20
251215 1.65674 7.68000 75: เบเปเบฒ ($word =~ /($regex)/ ) {
251215 0.03264 4.40000 79: debug("word: $i_wd ".($has ? 'match' :
251215 0.02693 4.10000 81: return $has;
260643 0.02841 4.07000 128: เบเปเบฒ ( $debug ) {
260643 0.02601 4.04000 126: my $message = shift;
251215 0.02641 3.91000 73: my $has = 0;
251215 0.03311 3.71000 70: เบเบญเบเบเปเบญเบ $i_wd = shift;
251215 0.02699 3.69000 72: $regex เบเบญเบเบเปเบญเบ = shift;
251215 0.02766 3.68000 71: my $word = shift;
50243 0.59726 1.00000 59: $count{$i_LINES}{cons} =
50243 0.48175 0.92000 61: $count{$i_LINES}{spec} =
50243 0.00644 0.89000 56: $i_cons เบเบญเบเบเปเบญเบ = matches($i_word, $word,
50243 0.48837 0.88000 63: $count{$i_LINES}{caps} =
50243 0.00516 0.88000 58: $i_caps เบเบญเบเบเปเบญเบ = matches($i_word, $word, '^[(A-
50243 0.00631 0.81000 54: $i_spec เบเบญเบเบเปเบญเบ = matches($i_word, $word, '[^a-
50243 0.00496 0.80000 57: $i_vows เบเบญเบเบเปเบญเบ = matches($i_word, $word,
50243 0.00688 0.80000 53: $i_word++ ;
50243 0.48469 0.79000 62: $count{$i_LINES}{only} =
50243 0.48928 0.77000 60: $count{$i_LINES}{vows} =
50243 0.00683 0.75000 55: $i_only เบเบญเบเบเปเบญเบ = matches($i_word, $word, '^[^a-
เบเบฑเบเบเบตเบเบฑเบเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบธเบเบชเบธเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเบเบฑเบเปเบกเบเบนเบเปเบเบฃเปเบเบฅเปเบเปเบญเบ,
เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเปเบเบดเปเบเบงเปเบฒเปเบชเบฑเปเบเบฅเบฐเบซเบฑเบเปเบเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบเบตเปเบชเบธเบ. เปเบชเบฑเปเบ regex เบเบฑเปเบ
เปเบเบดเปเบเบเบทเบงเปเบฒเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบชเปเบฅเบฑเบเบเปเบญเบ, เบเบปเบงเบขเปเบฒเบ. เบเบทเปเปเบงเปเบงเปเบฒเปเบเบทเปเบญเบเบกเบทเปเบซเบผเบปเปเบฒเบเบตเปเบเบงเบเบเบฐเปเบเบฑเบ
เปเบเปเบฎเปเบงเบกเบเบฑเบ, เบเปเปเบกเบตเบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบฝเบงเบเบตเปเบเบฐ profile เบฅเบฐเบซเบฑเบเบเบญเบเบเปเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบตเปเบเบตเบเบตเปเบชเบธเบ
เปเบเบทเปเบญเบโเบกเบทโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโ.
เปเบเบดเปเบ "Apache::SmallProf" เปเบเบดเปเบเปเบเบทเปเบญเบกเบเปเป "Devel::SmallProf" เปเบเบปเปเบฒเปเบเปเบ "mod_perl".
เบเบฑเบเบเบฐเบเบฒ::FastProf
"Devel::FastProf" เปเบกเปเบเบเบนเปเบชเปเบฒเบเบชเบฒเบ Perl เบญเบทเปเบ. เบเบตเปเปเบเปเบเบทเบเบเบฝเบเบเปเบงเบเบเบฑเบเบชเบฐเบเบฐเบเบตเปเบเบฐเปเบเปเบฎเบฑเบ
เปเบเบฑเบ profiler เปเบชเบฑเปเบเปเบง, เบเปเบงเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ "Devel::SmallProf", เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบ
เบเบฝเบเปเบ "C". เปเบเบทเปเบญเปเบเป "Devel::FastProf", เบชเบฐเปเบญเบ "-d" argument เปเบซเปเบเบฑเบ Perl:
$> perl -d:FastProf wordmatch -f perl5db.pl
<...เบซเบผเบฒเบเปเบชเบฑเปเบเบเบทเบเบเบฑเบเบญเบญเบ...>
เบเบปเบเบฅเบฒเบเบเบฒเบ wordmatch เบชเปเบฒเบฅเบฑเบ perl5db.pl:
เปเบชเบฑเปเบโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: 9428โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเปเบเบฅโเปโ: 50243โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 20480โ
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 7790โ
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: 4801
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบเบดเบกโเปเบซเบเปโ: 1316โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเป vowelsโ: 1701โ
"Devel::FastProf" เบเบฝเบเบชเบฐเบเบดเบเบดเปเบชเปเปเบเบฅเป fastprof.out เปเบโเบฅเบฐโเบเบปเบโเบเบฐโเบเบธโเบเบฑเบโ.
เปเบเบฅโเปโเบเบปเบโเบเบฐโเบฅเบดเบโ, เบเบตเปโเบชเบฒโเบกเบฒเบโเบเปเบฒโเบเบปเบโเปเบเปโ, เบชเบฒโเบกเบฒเบโเบเบตโเบเบงเบฒเบกโเบซเบกเบฒเบโเปเบเบโเบเบฒเบโเบเปเบฒโเปเบเป "fprofppโ"
เปเบเบฃเปเบเบฃเบกเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ.
$> fprofpp | เบซเบปเบง -n20
# เบฎเบนเบเปเบเบเบเบปเบเบเบฐเบฅเบดเบ fprofpp เปเบกเปเบ:
# เบเบทเปเปเบเบฅเป: เบเบฑเบเปเบงเบฅเบฒเบชเบฒเบ: เปเบซเบผเปเบ
wordmatch:75 3.93338 251215: เบเปเบฒ ($word =~ /($regex)/ ) {
wordmatch:79 1.77774 251215: debug("word: $i_wd ".($has ? 'match' : 'does not match')." chars: /$regex/");
wordmatch:81 1.47604 251215: return $has;
wordmatch:126 1.43441 260643: my $message = shift;
wordmatch:128 1.42156 260643: เบเปเบฒ ( $debug ) {
wordmatch:70 1.36824 251215: เบเบญเบเบเปเบญเบ $i_wd = shift;
wordmatch:71 1.36739 251215: my $word = shift;
wordmatch:72 1.35939 251215: $regex เบเบญเบเบเปเบญเบ = shift;
เบเบฑเบเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบฅเบฐเบชเบฒเบเปเบเปเบเบทเบเปเบญเบตเปเบเปเบกเปเบเบเบทเบเบฑเบ
เบเบปเบเบเบฐเบฅเบดเบ "Devel::SmallProf", เปเบฅเบฐเบฅเปเบฒเบเบฑเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเปเบเบเบญเบตเบเปเบชเป
เบเบฒเบโเบเบฑเบโเบฅเปเบฒโเบเบฑเบโเบเบญเบโเบเปเบฒโเบเบงเบโเบเบตเปโเปเบเปโเปเบงโเบฅเบฒโเปเบเปโเบฅเบฐโเปเบชเบฑเปเบโเบเบตเปโเบเบฐโเบเบฐโเบเบดโเบเบฑเบโ, "เบเปเบฒโเบซเบฒเบโเบงเปเบฒ ( $debug ) { " เปเบฅเบฐ "เบเบญเบเบเปเบญเบ
$message = shift;", เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ. เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบญเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเบเบตเปเบเบฑเบเบเบถเบเปเบงเปเบญเบฒเบเบเบฐเบขเบนเปเปเบ
algorithm เบเบตเปเปเบเปเบเบฒเบเปเบ, เบซเบผเบทเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบเบฅเบฐเบเบปเบเบซเบผเบท
เบเบฒเบเบเบฑเบเปเบเปเบ.
เปเบเบดเปเบ DBIx::Profile เปเบเบดเปเบเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฒเบเปเบเป "DBIx::*"
namespace.
เบเบฑเบเบเบฐเบเบฒ::NYTProf
"Devel::NYTProf" เปเบกเปเบ เบเปเปเปเบ เบเบฒเบเบเบฐเบฅเบดเบ เบเบญเบ Perl code profiler, เบเบฒเบเปเบเปเปเบเบเปเปเบเบปเบเบเปเบญเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเปเบ
เปเบเบทเปเบญเบโเบกเบทโเบญเบทเปเบเปโเปเบฅเบฐโเบเบฐโเบเบดโเบเบฑเบโเบฅเบฑเบโเบชเบฐโเบเบฐโเปเบขเบฑเบโเบเปเบฒโเบเบงเบโเบซเบผเบฒเบโ. เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบ เบเบณ เปเบเปเปเบเบฑเบ
เบญเบญเบเปเบฅเบเป profiler, เบ block เบซเบผเบท เบฅเบฐเบเบปเบเบเปเบญเบ profiler, เบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เบกเบฑเบโเบเบฑเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเปเบเป sub-
เบเบงเบฒเบกเบฅเบฐเบญเบฝเบ microsecond (100ns) เปเบเบฅเบฐเบเบปเบเบเบตเปเปเบซเป "clock_gettime()". เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบ
เปเบฅเบตเปเบกโเบเบปเปเบโเปเบฅเบฐโเบขเบธเบโเปเบเบปเบฒโเปเบเบดเบโเปเบกเปเบโเบงเปเบฒโเปเบเบโเบเบฒเบโเบเบตเปโเปเบเปโเบฎเบฑเบโเบเบฒเบ profiledโ. เบกเบฑเบเปเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบงเปเบถเปเบเปเบเบซเบฒเปเบเบฃเปเบเบฅเป
เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ "mod_perl". เบกเบฑเบเบเบฝเบเปเบเบฑเบ "c" เปเบฅเบฐเบญเบฒเบเบเบฐเปเบเบฑเบเปเบเปเบเบเบตเปเปเบงเบเบตเปเบชเบธเบ
เบกเบตเบชเปเบฒเบฅเบฑเบ Perl. เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบงเบฒเบกเปเบขเบฑเบเบเบฝเบเปเบเปเปเบเบชเบธเบ. เบเบฝเบเบเปเปเบฅเปเบง, เปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบ
เบกเบฑเบเปเบฎเบฑเบเบงเบฝเบ - เบเบฝเบเปเบเปเปเบเปเบเบธเปเบก "-d" เบเบตเปเบเบธเปเบเปเบเบตเบเปเบเบทเปเบญเบชเบฝเบเบกเบฑเบเปเบฅเบฐเปเบฅเปเบเบฅเบฐเบซเบฑเบ.
$> perl -d:NYTProf wordmatch -f perl5db.pl
เบเบปเบเบฅเบฒเบเบเบฒเบ wordmatch เบชเปเบฒเบฅเบฑเบ perl5db.pl:
เปเบชเบฑเปเบโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: 9427โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเปเบเบฅโเปโ: 50243โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 20480โ
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบญเบฑเบโเบชเบญเบโเบเบดโเปเบชเบ (เบเปเปโเปเบกเปเบโเบเปเบฒโ)โ: 7790โ
เบเบณเบชเบฑเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบเบฐเบเบฑเบเบเบฐเบเบฐ: 4801
เบเปเบฒโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเปโเบเบปเบงโเบเบดเบกโเปเบซเบเปโ: 1316โ
เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเบเบตเปโเบกเบตโเบเบฝเบโเปเบเป vowelsโ: 1701โ
"NYTProf" เบเบฐเบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบปเบเบฅเบฒเบเบเบฒเบเปเบเบปเปเบฒเปเบเปเบเปเบเบฅเป nytprof.out เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ. เบกเบฐเบเบธเบ
เบเบปเบโเบฅเบฒเบโเบเบฒเบโเบเบตเปโเบชเบฒโเบกเบฒเบโเบญเปเบฒเบโเปเบเปโเบชเบฒโเบกเบฒเบโเบเบทเบโเบชเปเบฒเบโเบเบฑเปเบโเบเบถเปเบโเบเบฒเบโเบเบตเปโเบเบตเปโเปเบเบโเบเบฒเบโเบเปเบฒโเปเบเป "nytprofhtmlโ" เบเบตเปโเบชเบฐโเบซเบเบญเบโเปเบซเป (HTML
output) เปเบฅเบฐเปเบเบเบเบฒเบ "nytprofcsv" (CSV output). เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเปเบฅเบฐเบเบปเบ Unix "html2text"
เบเบปเบเบเบฐเปเบซเบเบเปเบเบเบฒเบเปเบเบ nytprof/index.html เปเบเบฅเปเปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบเบขเบนเปเบเบตเปเบเบตเป.
$> html2text nytprof/index.html
เบเบฑเบเบเบฐเบเบตเปเบเบฃเปเบเบฅเปเบเบฐเบชเบดเบเบเบดเบเบฒเบ
เบชเปเบฒเบฅเบฑเบ wordmatch
เบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบงเบฑเบเบชเบธเบ 26 เบเบฑเบเบเบฒ 13:46:39 2008
เบฅเบฒเบเบเบฒเบเบงเบฑเบเบชเบธเบ เบงเบฑเบเบเบต 26 เบเบฑเบเบเบฒ 13:47:23 2008
15 เบเบดเบเบเบฐเบเบณเบเปเบญเบเบญเบฑเบเบเบฑเบเบเบปเปเบ - เบเบฑเบเบฎเบฝเบเบเบฒเบกเปเบงเบฅเบฒเบชเบฐเปเบเบฒเบฐ
|เปเบ|P|F|เบฅเบงเบก|เบชเบฐเปเบเบฒเบฐ|เบฅเบฒเบเบเบฒเบเบเปเบญเบ|
| | | |เปเบงเบฅเบฒ |เปเบงเบฅเบฒ | |
|251215|5 |1 |13.09263 |10.47692 |เบซเบผเบฑเบ:: |เบเบฒเบเปเบเปเบเบเบฑเบ |
|260642|2 |1 |2.71199 |2.71199 |เบเบปเปเบเบเป:: |debug |
|1 |1 |1 |0.21404 |0.21404 |เบเบปเปเบเบเป:: |เบเบปเบเบฅเบฒเบเบเบฒเบ |
|2 |2 |2 |0.00511 |0.00511 |XSLoader:: |load (xsub) |
|14 |14|7 |0.00304 |0.00298 |เบเบนเปเบชเบปเปเบเบญเบญเบ:: |เบเปเบฒเปเบเบปเปเบฒ |
|3 |1 |1 |0.00265 |0.00254 |เบเบนเปเบชเบปเปเบเบญเบญเบ:: |as_heavy |
|10 |10|4 |0.00140 |0.00140 |vars:: |เบเบณเปเบเบปเปเบฒ |
|13 |13|1 |0.00129 |0.00109 |เบเบปเบเบเบตเป:: |เบเปเบฒเปเบเบปเปเบฒ |
|1 |1 |1 |0.00360 |0.00096 |FileHandle:: |เบเปเบฒเปเบเบปเปเบฒ |
|3 |3 |3 |0.00086 |0.00074 |เบเบณเปเบเบทเบญเบ::เบฅเบปเบเบเบฐเบเบฝเบ::|เบเบณเปเบเบปเปเบฒ |
|9 |3 |1 |0.00036 |0.00036 |เปเบเบฑเปเบกเบเบงเบ:: |เบเบดเบ |
|13 |13|13|0.00032 |0.00029 |เปเบเบฑเปเบกเบเบงเบ:: |เบเปเบฒเปเบเบปเปเบฒ |
|2 |2 |2 |0.00020 |0.00020 |เบเบณเปเบเบทเบญเบ:: |เบเบณเปเบเบปเปเบฒ |
|2 |1 |1 |0.00020 |0.00020 |Getopt::Long:: |ParseOptionSpec|
|7 |7 |6 |0.00043 |0.00020 |เปเบเบฑเปเบกเบเบงเบ:: |unimport |
เบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบดเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบฑเบกเบเบญเบ 189 subroutines.
เบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบเบเบปเบเบฅเบฒเบเบเบฒเบเปเบฅเปเบงเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบเปเบฝเบงเบเบฑเบเบญเบฑเบเปเบ
subroutines เปเบกเปเบเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบเบตเปเบชเบธเบ. เบเปเปเปเบเปเบซเปเบชเบฐเบเบดเบเบดเบเบฒเบเบขเปเบฒเบเบเปเบฝเบงเบเบฑเบเปเบซเบผเปเบ
เปเบเบฅเป profiled.
เปเบเบฅเปเบฅเบฐเบซเบฑเบเปเบซเบผเปเบ - เบชเบฑเปเบเปเบเบเปเบงเบฅเบฒเบเบดเปเบชเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบทเป
|Stmts|เบชเบฐเปเบเบฒเบฐ|เบชเบฐเปเบฅเปเบ. |เบเบปเบเบฅเบฒเบเบเบฒเบ|เปเบซเบผเปเบเบเบตเปเบกเบฒ|
| |เปเบงเบฅเบฒ | | | |
|2699761|15.66654 |6e-06 |line . เบเบฑเบ. sub|wordmatch|
|35 |0.02187 |0.00062|เปเบชเบฑเปเบ . เบเบฑเบ. sub|IO/Handle.pm |
|274 |0.01525 |0.00006|เปเบชเบฑเปเบ . เบเบฑเบ. sub|Getopt/Long.pm |
|20 |0.00585 |0.00029|เปเบชเบฑเปเบ . เบเบฑเบ. เบเปเบญเบ|Fcntl.pm|
|128 |0.00340 |0.00003|เปเบชเบฑเปเบ . เบเบฑเบ. sub|Exporter/Heavy.pm |
|42 |0.00332 |0.00008|เปเบชเบฑเปเบ . เบเบฑเบ. sub|IO/File.pm |
|261 |0.00308 |0.00001|เปเบเบง . เบเบฑเบ. sub|เบเบนเปเบชเบปเปเบเบญเบญเบ.pm|
|323 |0.00248 |8e-06 |line . เบเบฑเบ. sub|constant.pm|
|12 |0.00246 |0.00021|เปเบเบง . เบเบฑเบ. sub|File/Spec/Unix.pm |
|191 |0.00240 |0.00001|เปเบเบง . เบเบฑเบ. sub|vars.pm|
|77 |0.00201 |0.00003|เปเบชเบฑเปเบ . เบเบฑเบ. sub|FileHandle.pm|
|12 |0.00198 |0.00016|เปเบเบง . เบเบฑเบ. เบเปเบญเบ|Carp.pm|
|14 |0.00175 |0.00013|เปเบเบง . เบเบฑเบ. sub|Symbol.pm|
|15 |0.00130 |0.00009|เปเบชเบฑเปเบ . เบเบฑเบ. sub|IO.pm|
|22 |0.00120 |0.00005|เปเบเบง . เบเบฑเบ. sub|IO/Seekable.pm |
|198 |0.00085 |4e-06 |line . เบเบฑเบ. sub|warnings/register.pm|
|114 |0.00080 |7e-06 |line . เบเบฑเบ. sub|strict.pm|
|47 |0.00068 |0.00001|เปเบเบง . เบเบฑเบ. sub|warnings.pm|
|27 |0.00054 |0.00002|เปเบชเบฑเปเบ . เบเบฑเบ. sub|overload.pm|
|9 |0.00047 |0.00005|เปเบเบง . เบเบฑเบ. sub|SelectSaver.pm|
|13 |0.00045 |0.00003|เปเบเบง . เบเบฑเบ. sub|File/Spec.pm |
|2701595|15.73869| |เบเบฑเบเปเบปเบ |
|128647 |0.74946 | |เบชเบฐเปเบฅเปเบ |
| |0.00201 |0.00003|เบเบฒเบเบเบฒเบ |
| |0.00121 |0.00003|เบเบงเบฒเบกเบเปเบฝเบเปเบเบ |
เบเบปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเบฐเบฅเบดเบเปเบเบ NYTProf 2.03 Perl profiler, เบเบฑเบเบเบฐเบเบฒเปเบเบ Tim Bunce เปเบฅเบฐ
เบญเบฒเบเบฒเบก Kaplan.
เปเบเบเบธเบเบเบตเป, เบเปเบฒเบเปเบฒเบเปเบเป html เบเบปเบเบฅเบฒเบเบเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฅเบดเบเปเบชเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบเปเปเบเบทเปเบญ
เปเบเบฒเบฐเปเบเบปเปเบฒเปเบเปเบเปเบเปเบฅเบฐ subroutine เปเบฅเบฐเปเบเปเบฅเบฐเบชเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเปเบเปเปเบเบงเบฒเบก
เบฅเบฒเบเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป, เปเบฅเบฐเบกเบตเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบฑเบกเปเบเบเปเบงเบเบเบปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเปเบเบฅเปเปเบซเบผเปเบ,
เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฐเบชเบฐเปเบเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ wordmatch-line.html เปเบเบฅโเปโ, เบเบฝเบโเบเปโเบเบตเปโเบเบฐโ
เปเบซเปเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบญเบเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฒเบเบซเบงเบฑเบเบเบฒเบเปเบเบทเปเบญเบเบกเบทเปเบขเบฑเบเบเบตเป.
$> html2text nytprof/wordmatch-line.html
เบเปเปเบกเบนเบเบเบฐเบชเบดเบเบเบดเบเบฒเบ --block view-.-line view-.-sub view-
เบชเปเบฒเบฅเบฑเบ wordmatch
เบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบงเบฑเบเบชเบธเบ 26 เบเบฑเบเบเบฒ 13:46:39 2008
เบฅเบฒเบเบเบฒเบเบงเบฑเบเบชเบธเบ เบงเบฑเบเบเบต 26 เบเบฑเบเบเบฒ 13:47:22 2008
เปเบเบฅเปเบเปเบฒเบเบตเปเบเบปเบเบเบฑเบ
เบเบดเบเบเบฐเบเบณเบเปเบญเบ - เบเบฑเบเบฎเบฝเบเบเบฒเบกเปเบงเบฅเบฒเบชเบฐเปเบเบฒเบฐ
|เบเบฒเบเปเบ |P|F|เบฅเบงเบก|เบชเบฐเปเบเบฒเบฐ|เบฅเบฒเบเบเบฒเบเบเปเบญเบ|
| | | |เปเบงเบฅเบฒ |เปเบงเบฅเบฒ | |
|251215|5|1|13.09263 |10.47692 |main::|matches|
|260642|2|1|2.71199 |2.71199|เบซเบผเบฑเบ::|เบเบตเบเบฑเบ |
|1 |1|1|0.21404 |0.21404 |เบซเบผเบฑเบ::|เบเบปเบเบฅเบฒเบเบเบฒเบ |
|0 |0|0|0 |0 |เบเบปเปเบเบเป::|BEGIN |
|Line|Stmts.|Exclusive|Avg. |เบฅเบฐเบซเบฑเบ |
| | |เปเบงเบฅเบฒ | | |
|1| | | |#!/usr/bin/perl |
|2| | | | |
| | | | |เปเบเปเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบ; |
|3 |3 |0.00086 |0.00029|# เปเบเปเปเบงเบฅเบฒ 0.00003s เปเบเบซเบฒ 1 เปเบเบทเปเบญ:: |
| | | | |เบเปเบฒเปเบเบปเปเบฒ |
| | | | | เบเบฒเบโเบเปเบฒโเปเบเปโเบเปเบฒโเปเบเบทเบญเบโ; |
|4 |3 |0.01563 |0.00521|# เปเบเปเปเบงเบฅเบฒ 0.00012s เปเบเบญเบญเบเบเบณเปเบเบทเบญเบ 1 เบชเบฒเบ:: |
| | | | |เบเปเบฒเปเบเบปเปเบฒ |
|5| | | | |
|6| | | |=head1 NAME |
|7| | | | |
|8| | | |filewords - เบเบฒเบโเบงเบดโเปเบเบฒเบฐโเบเปเบฒโเบเบญเบโเปเบเบฅโเปโเบเปเบญเบโเบเปเปโเบกเบนเบ |
<...snip...>
|62 |1 |0.00445 |0.00445|เบเบดเบกเบเบปเบเบฅเบฒเบเบเบฒเบ( %count ); |
| | | | |# เปเบเปเปเบงเบฅเบฒ 0.21404s เปเบเบซเบฒ 1 เบชเบฒเบเบซเบฒเบซเบผเบฑเบ::เบฅเบฒเบเบเบฒเบ|
|63| | | | |
| | | | |# เปเบเปเบเปเบฒเบ 23.56955s (10.47692+2.61571) เบเบฒเบเปเบ |
| | | | |เบเบปเปเบเบเป::เบเบฒเบเบเบฑเบเบเบนเปเบเบตเปเบเบทเบเปเบญเบตเปเบเบงเปเบฒ 251215 เบเบฑเปเบ, |
| | | | |avg 0.00005s/เปเบ: #50243 เบเบฑเปเบ |
| | | | |(2.12134+0.51939s) เบขเบนเปเปเบเบง 57 เบเบญเบ wordmatch, avg|
| | | | |0.00005s/call #50243 เบเบฑเปเบ (2.17735+0.54550s) |
|64| | | |เบขเบนเปเปเบเบง 56 เบเบญเบ wordmatch, avg 0.00005s/call # |
| | | | |50243 เปเบเบทเปเบญ (2.10992+0.51797s) เบขเบนเปเปเบเบง 58 เบเบญเบ |
| | | | |wordmatch, เบชเบฐเปเบฅเปเบ 0.00005s/เปเบ #50243 เปเบเบทเปเบญ |
| | | | |(2.12696+0.51598s) เบขเบนเปเปเบเบง 55 เบเบญเบ wordmatch, avg|
| | | | |0.00005s/call #50243 เบเบฑเปเบ (1.94134+0.51687s) |
| | | | |เบขเบนเปเปเบเบง 54 เบเบญเบ wordmatch, avg 0.00005s/call |
| | | | |sub matches { |
<...snip...>
|102| | | | |
| | | | |# เปเบเปเปเบงเบฅเบฒ 2.71199s เบเบฒเบเปเบ main::debug เบเบถเปเบเปเบเบฑเบ |
| | | | |เปเบ 260642 เปเบเบทเปเบญ, เบชเบฐเปเบฅเปเบ 0.00001s/เปเบ: # |
| | | | |251215 เปเบงเบฅเบฒ (2.61571+0s) เปเบเบเบซเบผเบฑเบ::เบเบฒเบเปเบเปเบเบเบฑเบเบขเบนเปเบเบตเป |
|103| | | |line 74 เบเบญเบ wordmatch, avg 0.00001s/call #9427 |
| | | | |เปเบงเบฅเบฒ (0.09628+0s) เบขเบนเปเปเบเบง 50 เบเบญเบ wordmatch, avg|
| | | | |0.00001s/เปเบ |
| | | | |sub debug { |
|104 |260642|0.58496 |2e-06 |my $message = shift; |
|105| | | | |
|106 |260642|1.09917 |4e-06 |if ($debug ) { |
|107| | | |เบเบดเบก STDERR "DBG: $message\n"; |
|108| | | |}|
|109| | | |}|
|110| | | | |
|111 |1 |0.01501 |0.01501|เบญเบญเบ 0; |
|112| | | | |
Oodles เบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบขเบนเปเปเบเบเบฑเปเบ - เบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเปเปเปเบ.
เปเบเบดเปเบ "Devel::NYTProf::Apache" เปเบเบดเปเบเปเบเบทเปเบญเบกเบเปเป "Devel::NYTProf" เปเบเบปเปเบฒเปเบเปเบ "mod_perl".
เบเบณ เบฅเบฑเบเบเบฑเบเบฎเบฝเบ
เปเบกเบเบนเบ Perl เบเปเปเปเบกเปเบเปเบเบทเปเบญเบเบกเบทเบเบฝเบงเบเบตเปเบเบฑเบเบงเบดเปเบเบฒเบฐเบเบฐเบชเบดเบเบเบดเบเบฒเบเบกเบตเบขเบนเปเปเบเบเบฒเบเบเปเบฒเบเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒ, เบฅเบฐเบเบปเบ
เปเบเบทเปเบญเบเบกเบทเปเบเบฑเปเบ "เปเบงเบฅเบฒ" เบเปเปเบเบงเบเบเบทเบเบกเบญเบเบเปเบฒเบกเปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเปเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบงเบฅเบฒ a
เปเบเบดเปเบเปเบงเปเบเบเบฒเบเบเบฑเบเบฅเบฝเบ. เบเบถเปเบกเบซเบผเบฒเบเบซเบปเบง, เปเบซเบผเบปเปเบฒเบเบตเป เปเบฅเบฐเบเบปเบเบเบงเบฒเบก, เปเบเปเบเบทเบเบเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบ
เบเบฒเบเบเบฑเบเบฅเบฝเบ algorithms, เปเบฅเบฐเบเบตเปเบเปเปเปเบกเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบฐเปเบฎเบฑเบเบเปเปเบฒเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเปเบเบเปเบฒเบง, เบกเบตเบซเบผเบฒเบเบเบตเปเบเบต
เบเบฒเบเบเบฑเบเบฎเบฝเบเปเบกเบเบนเบเบเบตเปเบชเบปเบกเบเบงเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ: "Sort::Maker", "Sort::Key" เบเบฒเบเบฎเบฝเบ spring to
เปเบ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบฑเบเบเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบชเบฑเบเปเบเบเบเบฒเบเบเบฒเบเบขเปเบฒเบเบเปเบฝเบงเบเบฑเบ Perl เบชเบฐเปเบเบฒเบฐ
เบเบฒเบเบเบตเบฅเบฒเบเบฒเบเปเบฝเบงเบเบฑเบเบเบฑเบเบซเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบธเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบซเปเบเบปเบงเบขเปเบฒเบเบซเบผเบทเบชเบญเบเบเบฑเบ
เบเปเบฝเบงโเบเบฑเบโเบเบฒเบโเบเบฑเบโเบฅเบฝเบโเบเบฐโเบฅเบดโเบกเบฒเบโเบเปเปโเบกเบนเบโเบเบฐโเบซเบเบฒเบโเปเบซเบเปโเบชเบฒโเบกเบฒเบโเบกเบตโเบเบปเบโเบเบฐโเบเบปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโ. เบเบฐเบเบฒเบเบเปเบฒเบญเบดเบ, เปเบฅเบทเปเบญเบเป
เบเบธเบเบเบตเปเบเบทเบเบกเบญเบเบเปเบฒเบกเปเบเปเบงเบฅเบฒเบเบตเปเบเบฑเบเบฅเบฝเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบ, เบเบปเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบเบเปเบญเบเบเปเปเบกเบนเบ
เบเบทเบเบเปเบฒเบเบปเบเปเบซเปเบเบฑเบเบเบฒเบเบเบฑเบเปเบฅเบฐเปเบเบซเบผเบฒเบเปเบเปเบฅเบฐเบเบต "grep()" เบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเปเบเบฑเบเบเบปเบงเบเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบ:
@data = เบเบฑเบเบฎเบฝเบ grep { /$filter/ } @incoming
เบเปเบฒเบชเบฑเปเบเปเบเบฑเปเบเบเบตเปเบชเบฒเบกเบฒเบเบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบญเบเบงเบฑเบเบชเบฐเบเบธเบเบตเปเบเบฐเบเบฑเบเบฅเบฝเบเบเบฒเบกเบเบปเบงเบเบดเบ
เปเบโเบชเบฐโเบเบฒเบโเบเบตเปโเบเปเบฒโเบญเบดเบโ, เปเบฅเบฐโเบเปเปโเบเบงเบโเบเบฐโเบเบทเบโเบเบฐโเบเบดโเปเบชเบ lightly เปเบเบตเบโเปเบโเบขเปเบฒเบโเบเบฝเบงโเบเบปเบโเบเบทเปเบโเบเบฒเบโเบเบญเบโเบเบปเบโ
เบเบงเบฒเบกเบฅเบฝเบเบเปเบฒเบ. เบซเบผเบฑเบเบเบฒเบ "KISS" เบกเบฑเบเบเบฐเบเบทเบเบกเบญเบเบเปเบฒเบก - เบเบปเบงเบขเปเบฒเบเบเปเปเปเบเปเบเป the
เบฅเบฐเบเบปเบเบเปเบฒเบเบเบฒเบ "เปเบงเบฅเบฒ" เบเบปเบเบเบฐเปเบซเบเบเปเบเบทเปเบญเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ. เปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบปเบงเบขเปเบฒเบเบเบปเบงเบเบดเบเบเบญเบ
เบเบฒเบเบเบฑเบเบฎเบฝเบเปเบเบทเปเบญเปเบเบเบญเบเปเบเบฅเปเบเบฐเบซเบเบฒเบเปเบซเบเป, เปเบเบฅเปเบเบฑเบเบเบถเบ apache เบเบฐเปเบฎเบฑเบ. เบญเบฑเบโเบเบตเปโเบกเบตโเบซเบผเบฒเบโเบเบงเปเบฒ
เปเบเบฃเบกเบฒเบเบเบญเบเบเบถเปเบเบฅเปเบฒเบเปเบชเบฑเปเบ, เบกเบตเบเบฐเปเบฒเบ 50M, เปเบฅเบฐเบชเปเบงเบเบซเบเปเปเบเบญเบเบกเบฑเบเปเบเบดเปเบเบเบทเบเบฑเปเบเบเบตเป:
# logfile
188.209-65-87.adsl-dyn.isp.belgacom.be - - [08/Feb/2007:12:57:16 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/ 4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
188.209-65-87.adsl-dyn.isp.belgacom.be - - [08/Feb/2007:12:57:16 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/ 4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
151.56.71.198 - [08/Feb/2007:12:57:41 +0000] "GET /suse-on-vaio.html HTTP/1.1" 200 2858 ".http://www.linux-on-laptops.com/sony.html" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
151.56.71.198 - [08/Feb/2007:12:57:42 +0000] "GET /data/css HTTP/1.1" 404 206"http://www.rfi.net/suse-on-vaio.html" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
151.56.71.198 - [08/Feb/2007:12:57:43 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en- เบชเบฐเบซเบฐเบฅเบฑเบ; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
217.113.68.60 - [08/Feb/2007:13:02:15 +0000] "GET/HTTP/1.1" 304 - "-" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
217.113.68.60 - [08/Feb/2007:13:02:16 +0000] "GET /data/css HTTP/1.1" 404 206"http://www.rfi.net/" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
debora.to.isac.cnr.it - โโ- [08/Feb/2007:13:03:58 +0000] "GET /suse-on-vaio.html HTTP/1.1" 200 2858 ".http://www.linux-on-laptops.com/sony.html" "Mozilla/5.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; Konqueror/3.4; Linux) KHTML/3.4.0 (เบเบทเบเบฑเบ Gecko)"
debora.to.isac.cnr.it - โโ- [08/Feb/2007:13:03:58 +0000] "GET /data/css HTTP/1.1" 404 206 ".http://www.rfi.net/suse-on-vaio.html" "Mozilla/5.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; Konqueror/3.4; Linux) KHTML/3.4.0 (เบเบทเบเบฑเบ Gecko)"
debora.to.isac.cnr.it - โโ- [08/Feb/2007:13:03:58 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; Konqueror/ 3.4; Linux) KHTML/3.4.0 (เบเบท Gecko)"
195.24.196.99 - [08/Feb/2007:13:26:48 +0000] "GET/HTTP/1.0" 200 3309 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.9" .20061206) Gecko/1.5.0.9 Firefox/XNUMX"
195.24.196.99 - [08/Feb/2007:13:26:58 +0000] "GET /data/css HTTP/1.0" 404 206"http://www.rfi.net/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9"
195.24.196.99 - - [08/Feb/2007:13:26:59 +0000] "GET /favicon.ico HTTP/1.0" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9"
crawl1.cosmixcorp.com - - [08/Feb/2007:13:27:57 +0000] "GET /robots.txt HTTP/1.0" 200 179 "-" "voyager/1.0"
crawl1.cosmixcorp.com - - [08/Feb/2007:13:28:25 +0000] "GET /links.html HTTP/1.0" 200 3413 "-" "voyager/1.0"
fhm226.internetdsl.tpnet.pl - - [08/Feb/2007:13:37:32 +0000] "GET /suse-on-vaio.html HTTP/1.1" 200 2858 ".http://www.linux-on-laptops.com/sony.html" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
fhm226.internetdsl.tpnet.pl - - [08/Feb/2007:13:37:34 +0000] "GET /data/css HTTP/1.1" 404 206"http://www.rfi.net/suse-on-vaio.html" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; SV1)"
80.247.140.134 - - [08/Feb/2007:13:57:35 +0000] "GET/HTTP/1.1" 200 3309 "-" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1 CLR; .1.1.4322.NET; .XNUMX)"
80.247.140.134 - [08/Feb/2007:13:57:37 +0000] "GET /data/css HTTP/1.1" 404 206"http://www.rfi.net" "Mozilla/4.0 (เปเบเบปเปเบฒเบเบฑเบเปเบเป; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
pop.compuscan.co.za - - [08/Feb/2007:14:10:43 +0000] "GET / HTTP/1.1" 200 3309 "-" "www.clamav.net"
livebot-207-46-98-57.search.live.com - - [08/Feb/2007:14:12:04 +0000] "GET /robots.txt HTTP/1.0" 200 179 "-" "msnbot/ 1.0 (+http://search.msn.com/msnbot.htm)"
livebot-207-46-98-57.search.live.com - - [08/Feb/2007:14:12:04 +0000] "GET /html/oracle.html HTTP/1.0" 404 214 "-" "" msnbot/1.0 (+http://search.msn.com/msnbot.htm)"
dslb-088-064-005-154.pools.arcor-ip.net - - [08/Feb/2007:14:12:15 +0000] "GET / HTTP/1.1" 200 3309 "-" "www.clamav .net"
196.201.92.41 - [08/Feb/2007:14:15:01 +0000] "GET/HTTP/1.1" 200 3309 "-" "MOT-L7/08.B7.DCR MIB/2.2.1 Profile/MIDP -2.0 เบเบฒเบเบเบฑเปเบเบเปเบฒ/CLDC-1.1"
เบงเบฝเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบฑเบเบฎเบฝเบ 286,525 เปเบเบงเบเบญเบเปเบเบฅเปเบเบตเปเปเบเบ Response Code, Query,
เบเบปเบงเบเปเบญเบเปเบงเบฑเบ, เบญเปเบฒเบเบญเบตเบ Url, เปเบฅเบฐเบชเบธเบเบเปเบฒเบเบงเบฑเบเบเบต. เบเบฒเบเปเบเปเปเบเบซเบเบถเปเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบฒเบเปเบเปเบฅเบฐเบซเบฑเบเบเปเปเปเบเบเบตเป,
เปเบเบดเปเบ iterates เปเบเปเบฅเบเบฐเปเบเบฅเปเบเบตเปเปเบซเปเบขเบนเปเปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ.
# sort-apache-log
#!/usr/bin/perl -n
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
@data เบเบญเบเบเปเบญเบ;
เปเบชเบฑเปเบ:
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
$line เบเบญเบเบเปเบญเบ = $_;
เบเปเบฒ (
$line =~ m/^(
([\w\.\-]+) # เบฅเบนเบเบเปเบฒ
\s*-\s*-\s*\[
([^]]+) # เบงเบฑเบเบเบต
\]\s*"\w+\s*
(\S+) # เบเบณเบเบฒเบก
[^"]+"\s*
(\d+) # เบชเบฐเบเบฒเบเบฐ
\s+\S+\s+"[^"]*"\s+"
([^"]*) # browser
"
.*
)$/x
) {
my @chunks = เปเบเบ(/ +/, $line);
$ip เบเบญเบเบเปเบญเบ = $1;
$date เบเบญเบเบเปเบญเบ = $2;
$query เบเบญเบเบเปเบญเบ = $3;
เบชเบฐเบเบฒเบเบฐเบเบฒเบ $ เบเบญเบเบเปเบญเบ = $4;
$browser เบเบญเบเบเปเบญเบ = $5;
push(@data, [$ip, $date, $query, $status, $browser, $line]);
}
}
เบเบญเบเบเปเบญเบ @sorted = เบเบฒเบเบเบฑเบเบฅเบฝเบ {
$a->[3] cmp $b->[3]
||
$a->[2] cmp $b->[2]
||
$a->[0] cmp $b->[0]
||
$a->[1] cmp $b->[1]
||
$a->[4] cmp $b->[4]
} @data;
foreach เบเบญเบเบเปเบญเบ $data ( @sorted ) {
เบเบดเบก $data->[5];
}
เบญเบญเบเบเบฒเบ 0;
เปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเปเบเบโเบเบฒเบโเบเบตเปโ, redirect "STDOUTโ" เบชเบฐโเบเบฑเปเบโเบกเบฑเบโเปเบเบฑเบโเปเบโเปเบเปโเบเบตเปโเบเบฐโเบเบงเบโเบชเบญเบโเบเบปเบโเปเบเปโเบฎเบฑเบโเปเบกเปเบโ
เปเบเปเปเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบเปเบฅเบฐเบเปเบฒเปเบเป "เปเบงเบฅเบฒ" utility เบเบญเบเบฅเบฐเบเบปเบเปเบเบทเปเบญเบเบงเบเบเบฒเปเบเบดเปเบเปเบเบเบฅเบงเบก
เปเบงเบฅเบฒเปเบฅเปเบ.
$> เปเบงเบฅเบฒ ./sort-apache-log logfile > out-sort
เบเบปเบงเบเบดเบ 0m17.371s
เบเบนเปเปเบเป 0m15.757s
sys 0m0.592s
เปเบเบเบเบฒเบเปเบเปเปเบงเบฅเบฒเบเบฝเบเปเบเปเบซเบผเบฒเบเบเบงเปเบฒ 17 เบงเบดเบเบฒเบเบต wallclock เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ. เบชเบฑเบเปเบเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ "เปเบงเบฅเบฒ"
เบเบปเบเปเบเปเบฎเบฑเบ, เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเปเบเปเบญเบฑเบเบเบฝเบงเบเบฑเบเบชเบฐเปเบซเบกเบต, เปเบฅเบฐเบเปเปเบชเบฑเบเบชเบปเบเบงเปเบฒเปเบเปเบฅเบฐเบเบปเบเปเบกเปเบเบซเบเบฑเบ
เปเบฒเบ เบเบงเบฒเบกเบงเปเบฒ.
เปเบงเบฅเบฒเบเบดเบเบเบตเปเบเปเบฒเบเปเบเปเบฅเปเบง
เปเบเบเบฅเบงเบก, เบซเบผเบท wallclock, เปเบงเบฅเบฒเบฅเบฐเบซเบงเปเบฒเบเปเบงเบฅเบฒเบเบตเป "เปเบงเบฅเบฒ" เบเบทเบเปเบญเบตเปเบ, เปเบฅเบฐเปเบงเบฅเบฒเบเบตเปเบกเบฑเบ
เบขเบธเบเบเบด. เปเบงเบฅเบฒเบเปเบฒเบเปเบเบฅเบงเบกเบกเบตเบเบฑเบเปเบงเบฅเบฒเบเบญเบเบเบนเปเปเบเป เปเบฅเบฐเบฅเบฐเบเบปเบ, เปเบฅเบฐเปเบงเบฅเบฒเบเบตเปเปเบเป
เบฅเปเบเปเบฒเบเบนเปเปเบเปเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบญเบทเปเบเปเปเบเบฅเบฐเบเบปเบ. เปเบเปเบเบญเบเบงเปเบฒ, เบเบตเปเปเบกเปเบเบซเบผเบฒเบเบเบตเปเบชเบธเบ
เบเบฐเบกเบฒเบเบเบฒเบเบงเบฑเบเปเบเบเบเบตเปเปเบซเป.
เปเบงเบฅเบฒ CPU เบเบญเบเบเบนเปเปเบเป
เปเบงเบฅเบฒเบเบญเบเบเบนเปเปเบเปเปเบกเปเบเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเปเปเบเบเบฒเบกเบเบญเบเบเบนเปเปเบเป
เบฅเบฐเบเบปเบเบเบตเปเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเบเบตเป.
เปเบงเบฅเบฒ CPU เบเบญเบเบฅเบฐเบเบปเบ
เปเบงเบฅเบฒเบเบญเบเบฅเบฐเบเบปเบเปเบกเปเบเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบตเป kernel เบเบปเบงเบกเบฑเบเปเบญเบเปเบเปเปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบปเบเบเบฐเบเบด, เบซเบผเบท
เบเบฒเบเปเบเบฅเบฐเบเบปเบ, เปเบเบเบฒเบกเบเบญเบเบเบนเปเปเบเปเบเบฐเบเบงเบเบเบฒเบเบเบตเป.
เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบฝเบงเบเบฑเบเบเบฑเบ "เบเบฒเบเบซเบฑเบเปเบเบฑเบ Schwarzian" เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบฅเบปเบเบฅเปเบฒเบเบเบฒเบ
input เปเบฅเบฐ output arrays เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเบเบปเบเปเบเบฑเบเบกเบฑเบ
เบกเบฒเบฎเบญเบเบเบทเบเบฑเบ. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบฅเบฐเบซเบฑเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเบเบทเบเบฑเบ:
# sort-apache-log-schwarzian
#!/usr/bin/perl -n
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เบเบดเบก
เปเบเบเบเบตเป $_->[0] =>
เบเบฑเบเบฅเบฝเบ {
$a->[4] cmp $b->[4]
||
$a->[3] cmp $b->[3]
||
$a->[1] cmp $b->[1]
||
$a->[2] cmp $b->[2]
||
$a->[5] cmp $b->[5]
}
เปเบเบเบเบตเป [$_, m/^(
([\w\.\-]+) # เบฅเบนเบเบเปเบฒ
\s*-\s*-\s*\[
([^]]+) # เบงเบฑเบเบเบต
\]\s*"\w+\s*
(\S+) # เบเบณเบเบฒเบก
[^"]+"\s*
(\d+) # เบชเบฐเบเบฒเบเบฐ
\s+\S+\s+"[^"]*"\s+"
([^"]*) # browser
"
.*
)$/xo ]
=> <> ;
เบญเบญเบเบเบฒเบ 0;
เปเบฅเปเบเบฅเบฐเบซเบฑเบเปเบซเบกเปเบเปเปเบเบฑเบ logfile เบเบฝเบงเบเบฑเบ, เบเบฑเปเบเบเปเบฒเบเปเบเบดเบ, เปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเปเบงเบฅเบฒเปเบซเบกเป.
$> เปเบงเบฅเบฒ ./sort-apache-log-schwarzian logfile > out-schwarz
เบเบปเบงเบเบดเบ 0m9.664s
เบเบนเปเปเบเป 0m8.873s
sys 0m0.704s
เปเบงเบฅเบฒเปเบเปเบเบทเบเบเบฑเบเบฅเบปเบเปเบเบดเปเบเบซเบเบถเปเบ, เปเบเบดเปเบเปเบเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบเบงเบฒเบกเปเบงเบเบตเปเบซเบเปเบฒเปเบเบปเบฒเบฅเบปเบเปเบเบเบกเบฒเบเบเบฐเบเบฒเบเปเบเบเปเปเบเบฒเบก.
เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบเบงเบเปเบเบดเปเบเบเบปเบเบเบฐเบฅเบดเบเปเบกเปเบเบชเบญเบเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเปเบเบเบเบฒเบเบเปเบฒเบญเบดเบ,
เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบฅเบฐเบเบปเบ Unix "cksum" utility เปเบเบปเปเบฒเบกเบฒ.
$> cksum out-sort out-schwarz
3044173777 52029194 เบญเบญเบ-เบเบฑเบ
3044173777 52029194 เบญเบญเบ-schwarz
BTW. เบฅเบฐเบงเบฑเบเปเบเบตเบเปเบเบเบญเบเบเบงเบฒเบกเบเบปเบเบเบฑเบเบเบฒเบเบเบนเปเบเบฑเบเบเบฒเบเบเบตเปเปเบซเบฑเบเบงเปเบฒเบเปเบฒเบเปเบฅเบฑเปเบเปเบเบเบเบฒเบเปเบเบ 50% เบเบญเบ
runtime เบเบฑเปเบเบเบฝเบง, เบเบฝเบเปเบเปเปเบเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบซเบเบถเปเบเปเบเบทเบญเบเบเปเปเบกเบฒเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ (เปเบฅเบทเปเบญเบเบเบดเบ) -
เบเปเบฒเบเบเบฝเบเปเบเปเบเบฐเบเปเบญเบเบเบตเปเปเบซเปเปเบซเบฑเบเบงเปเบฒเปเบเบปเปเบฒเปเบเบฑเบเบกเบฐเบเบธเบเปเบเบปเปเบฒเบเบฑเปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเปเบเบฑเบเปเบเบฅเปเบเบฅเบก Perl, เปเบฅเบฐ
เปเบเบปเปเบฒเบเบฐเปเบซเบฑเบเบชเบดเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป...
เบเบฒเบเบเบฑเบเบเบถเบ
เบเบฒเบเบชเปเบงเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเบตเปเบกเปเบเบเบฒเบเบเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบ
เบเปเปโเบเบงเบฒเบกโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบก, เบขเปเบฒเบโเปเบโเบเปโเบเบฒเบกโเบกเบตโเปเบฎเบโเบฎเบฝเบโเบเบญเบโเบเบงเบฒเบกโเบเบดเบโเบเบตเป
เปเบเบฐเบเปเบฒเบงเปเบฒเปเบเบฅเปเบเบฑเบเบเบถเบเบเบงเบเบเบฐเปเบเบฑเบ เบชเบปเบเบเบฐเบเบฒ, เปเบเบฑเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเปเบเบญเบเบเบปเบเบเบฐเบฅเบดเบ unbroken somehow
เบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบขเบนเปเบฅเบญเบเบเบญเบเปเบเบเบเบฒเบ. เบเปเบฒเบเบงเบฒเบกเปเบงเบขเบนเปเปเบเบเบฑเบเบซเบฒเปเบเบเปเปเบเบฒเบก, เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบ
เบเบดเบ
เบเบฒเบเปเบเบดเปเบเปเบซเบฑเบเบเบปเปเบงเปเบเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเบเบทเบเบตเป:
logger->debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบเบเปเบฒเบ process-id: $$ INC: " . dumper(\%INC) )
เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบเบทเบเบงเบดเปเบเบฒเบฐเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบชเบฐเปเบซเบกเบต, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบตเบเบฑเบ
เบฅเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบฑเบเบเบถเบเปเบกเปเบเบชเบนเบ. เปเบกเบทเปเบญ เบเบตเบเบฑเบ() subroutine เปเบเป
เปเบเบปเปเบฒเปเบ, เปเบฅเบฐเบเบปเบงเปเบ $debug เบเบฒเบเปเบเปเบเปเบขเบทเบเบขเบฑเบเบงเปเบฒเปเบเบฑเบเบชเบนเบ, เบเบปเบงเบขเปเบฒเบ, เบเปเปเบเบงเบฒเบก
เบเบตเปเบเบทเบเบชเบปเปเบเปเบเปเบฅเปเบงเบเบฐเบเบทเบเบเบปเบเปเบฅเบตเบเปเบฅเบฐเปเบเบเบเบฒเบเบเบฐเบชเบทเบเบเปเป. เปเบเบเบปเบงเบขเปเบฒเบ
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, "\%INC" hash เบเบฐเบเบทเบเบเบดเปเบกเปเบฅเปเบง, เปเบฅเบฐเบเปเปเบเบงเบฒเบก
เบเบฒเบเบเปเปเบชเปเบฒเบ, เบเบฑเบเบซเบกเบปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบกเบเปเบฒเบเบเบปเบงเปเบ debug เปเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบ
เบฅเบฐเบเบฑเบ, เปเบเบเบเบตเป:
logger->debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบเบเปเบฒเบ process-id: $$ INC: " . dumper(\%INC) ) เบเปเบฒ $DEBUG;
เบเบปเบเบเบฐเบเบปเบเบเบตเปเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเปเปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเบฐเบเบดเบเบเบปเบเบชเบญเบเบเบตเปเบกเบตเบเบฑเบเบชเบญเบเบฎเบนเบเปเบเบ, เบฅเบงเบกเบเบฑเบ a
"debug()" เปเบเบฃเปเบเบฑเบเบเปเบญเบเปเบเบทเปเบญเปเบฎเบฑเบเบเบฒเบกเบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบ "logger()" เบเบปเบเบเบฐเบเบด.
# ifdebug
#!/usr/bin/perl
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป Benchmark;
เปเบเปเบเปเปเบกเบนเบ::Dumper;
$DEBUG เบเบญเบเบเปเบญเบ = 0;
เปเบเปเบเบฑเบเบซเบฒเบเปเบญเบ {
$msg เบเบญเบเบเปเบญเบ = shift;
เบเปเบฒ ( $DEBUG ) {
เบเบดเบก "DEBUG: $msg\n";
}
};
เปเบงเบฅเบฒเปเบซเบผเบปเปเบฒเบเบตเป(100000, {
'เบเบตเบเบฑเบ' => เบเปเบญเบ {
debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบ A $0 เบเปเบฒเบ process-id: $$". Dumper(\%INC) )
},
'ifdebug' => เบเปเบญเบ {
debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบ A $0 เบเปเบฒเบ process-id: $$". Dumper(\%INC) ) เบเปเบฒ $DEBUG
},
});
เบกเบฒเปเบเบดเปเบเบงเปเบฒ "Benchmark" เปเบกเปเบเบซเบเบฑเบ:
$> perl ifdebug
Benchmark: เบเปเบฒเบเบปเบเปเบงเบฅเบฒ 100000 iterations เบเบญเบเบเบปเบเบเบตเป, sub...
ifdebug: 0 wallclock secs (0.01 usr + 0.00 sys = 0.01 CPU) @ 10000000.00/s (n=100000)
(เบเบณเปเบเบทเบญเบ: เบเบฒเบเบเปเปเบฒเบเบทเบเปเปเบญเบเปเบเบตเบเปเบเบชเบณเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบตเปเปเบเบทเปเบญเบเบทเปเบเป)
debug: 14 เปเบกเบเบเบดเบเบเบฒ (13.18 usr + 0.04 sys = 13.22 CPU) @ 7564.30/s (n=100000)
เปเบเบเปเบฅเบฐเบเบตเบซเบเบถเปเบ, เบฅเบฐเบซเบฑเบ, เปเบเบดเปเบเปเบฎเบฑเบเบเบทเบเบฑเบเบญเปเบญเบเบเปเบญเบเปเบเบปเปเบฒเบเบตเป outputting เปเบ
เบเปเปเบกเบนเบ debugging เปเบกเปเบเปเบเบฑเบเบซเปเบงเบ, เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเปเบเปเปเบกเบตเบซเบเบฑเบ, เปเบเปเปเบงเบฅเบฒ 14 เบงเบดเบเบฒเบเบต, เปเบฅเบฐเปเบ
เบเปเบฅเบฐเบเบตเบญเบทเปเบเบฅเบฐเบซเบฑเบเปเบเปเปเบงเบฅเบฒเบซเบเบถเปเบเบฎเปเบญเบเบเบญเบเบงเบดเบเบฒเบเบต. เปเบเบดเปเบเบเบทเบงเปเบฒเบกเบตเบเบงเบฒเบกเบเบฑเบเปเบเบเบเปเบชเบปเบกเบเบงเบ. เปเบเป เบ
เบเบปเบงเปเบ $DEBUG เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเปเบเบซเบฒ routine เบเปเบญเบ, เปเบเบเบเบตเปเบเบฐเบญเบตเบเปเบชเป smart
เบเบฒเบเบเปเบฒเบเบฒเบเบเบฒเบเปเบเบกเบฑเบ.
เบเบฒเบเบเบฑเบเปเบกเปเบเปเบญเบ if เบเบตเบเบฑเบ (เบเบปเบเบเบตเป)
เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบญเบปเบฒเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบทเปเบกเบญเบตเบเปเบฅเบฑเบเบเปเบญเบ, เปเบเบเปเบเปเปเบงเบฅเบฒเบฅเบงเบเบฅเบงเบก "DEBUG"
เบเบปเบเบเบตเป.
# ifdebug-เบเบปเบเบเบตเป
#!/usr/bin/perl
เปเบเปเบขเปเบฒเบเปเบเบฑเปเบเบเบฑเบ;
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป Benchmark;
เปเบเปเบเปเปเบกเบนเบ::Dumper;
เปเบเปเบเบปเบเบเบตเป
DEBUG => 0
;
เปเบเปเบเบฑเบเบซเบฒเบเปเบญเบ {
เบเปเบฒ (เบเบตเบเบฑเบ) {
$msg เบเบญเบเบเปเบญเบ = shift;
เบเบดเบก "DEBUG: $msg\n";
}
};
เปเบงเบฅเบฒเปเบซเบผเบปเปเบฒเบเบตเป(100000, {
'เบเบตเบเบฑเบ' => เบเปเบญเบ {
debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบ A $0 เบเปเบฒเบ process-id: $$". Dumper(\%INC) )
},
'เบเบปเบ' => เบเปเบญเบ {
debug( "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบ A $0 เบเปเบฒเบ process-id: $$". Dumper(\%INC) ) เบเปเบฒ DEBUG
},
});
เบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเปเบเบโเบเบฒเบโเบเบตเปโเบเบฐโเบฅเบดเบโเบเบฐโเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
$> perl ifdebug-เบเบปเบเบเบตเป
Benchmark: เบเปเบฒเบเบปเบเปเบงเบฅเบฒ 100000 iterations เบเบญเบเบเบปเบเบเบตเป, sub...
เบเบปเบเบเบตเป: 0 wallclock secs (-0.00 usr + 0.00 sys = -0.00 CPU) @ -7205759403792793600000.00/s (n=100000)
(เบเบณเปเบเบทเบญเบ: เบเบฒเบเบเปเปเบฒเบเบทเบเปเปเบญเบเปเบเบตเบเปเบเบชเบณเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบตเปเปเบเบทเปเบญเบเบทเปเบเป)
เบเปเบญเบ: 14 เปเบกเบเบเบธเบเบงเบดเบเบฒเบเบต (13.09 usr + 0.00 sys = 13.09 CPU) @ 7639.42/s (n = 100000)
เบเบปเบเบเบตเป "DEBUG" เปเบเบฑเบเบเบทเปเบเบเปเบงเบเบเบปเบงเปเบ $debug, เบขเบนเปเปเบเบเบธเบเบฅเบปเบ.
เบชเบนเบเบงเบดเบเบฒเบเบต, เปเบฅเบฐเบชเปเบฒเบเบเปเปเบเบงเบฒเบก "เบเบณเปเบเบทเบญเบ: เบเปเปเบฒเบเบทเบเปเปเบญเบเปเบเบตเบเปเบเบชเบณเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบตเปเปเบเบทเปเบญเบเบทเปเบเป".
เปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเปเปเบฅเบญเบ. เปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบกเบตเบซเบเบฑเบเปเบเบตเบเบเบถเปเบเปเบเปเป, เปเบฅเบฐเปเบเบฑเบเบซเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบถเปเบเบกเบตเปเบงเบฅเบฒเบเปเปเบฒเบเบทเบเปเปเบญเบเปเบเบตเบเปเบ
เบเบงเบเปเบฎเบปเบฒเบเบดเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเป 100000, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเป "B::Deparse" เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเปเบเบทเปเบญเบเบงเบเบเบฒเปเบเบดเปเบเปเบซเบกเป.
เบฅเบฐเบซเบฑเบ:
$> perl -MO=เปเบเบปเบฒ ifdebug-constant
เปเบเป Benchmark;
เปเบเปเบเปเปเบกเบนเบ::Dumper;
เปเบเปเบเบปเบเบเบตเป ('DEBUG', 0);
เปเบเปเบเบฑเบเบซเบฒเบเปเบญเบ {
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป 'refs' เบเบตเปเปเบเบฑเปเบเบเบฑเบ;
0;
}
เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบทเบญเบ;
เปเบเป 'refs' เบเบตเปเปเบเบฑเปเบเบเบฑเบ;
timethese(100000, {'เบเปเบญเบ', เบเปเบญเบ {
debug "เบเปเปเบเบงเบฒเบกเบเบฑเบเบเบถเบ $0 เบเปเบฒเบ process-id: $$". Dumper(\%INC);
}
, 'เบเบปเบเบเบตเป', เบเปเบญเบ {
0;
}
});
ifdebug-constant syntax เบเบปเบเบฅเบปเบ
เบเบปเบเปเบเปเบฎเบฑเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ เบเบปเบเบเบตเป() subroutine เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบปเบเบชเบญเบเบเบทเบเปเบเบเบเบตเปเบเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบ
เบเบปเบเบเบตเป "DEBUG": เบชเบนเบ. เปเบชเบฑเปเบเบเบตเปเบเบฐเบเบปเบเบชเบญเบเปเบเปเบเบทเบเบเบฑเบเบเบธเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบฑเบเบเบต, เปเบฅเบฐ
เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเปเบงเบฒเบเบฑเปเบ.
เปเบเบชเบชเบฐเบเบฃเบดเบ
เปเบญเบเบฐเบชเบฒเบเบเบตเปเปเบเปเปเบซเปเบซเบผเบฒเบเบงเบดเบเบตเปเบเบเบฒเบเบเปเบฒเบเบปเบเบเบธเบเบฎเปเบญเบ, เปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบ
เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเบเบฒเบเบเบฑเบเปเบเบเปเบเบเปเปเปเบเปเบเบฑเบเบเบธเบเปเบงเบฅเบฒเปเบฅเปเบเบเบญเบเบฅเบฐเบซเบฑเบ.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบชเบธเบเบเปเบฒเบ, เบเบปเปเบเบเบทเปเปเบงเปเบงเปเบฒเบกเบฑเบเบเปเปเปเบกเปเบ (เปเบเปเบงเบฅเบฒเบเบฝเบ) เปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฐเบฅเบดเบ a
เปเบเบโเบเบฒเบโเบเบตเปโเปเบเบฑเบโเบเบฐโเปเบซเบเบโเบเบตเปโเบเบฐโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเปเบโเปเบงโเบฅเบฒโเบชเบนเบโเบซเบผเบทโเบเบฒเบโเบฅเบปเบโเปเบฅเบฐโเบซเบผเบฑเบโเบเบฒเบโเบเบทเปเบโเบเบฒเบโเบเบตเปโเบชเบฒโเบกเบฒเบโเปเบเบฑเบโ
เบเบฝเบเปเบเบฑเบ: เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ เปเบเบเบเบฒเบ เบกเบต เบเปเบฒ เปเบเบเบเปเบฒเบเบดเบเบฒเบกเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ. เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเปเบเปเบเบญเบ
เบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบกเปเบเบทเบญเบเบเบฑเบเบเบต, เปเบเปเบกเบฑเบเบเบฐเบเปเปเปเบฎเบฑเบเบซเบผเบฒเบ, เบเบตเปเปเบกเปเบเบซเบผเบฒเบ
เบซเบเบถเปเบโเบเบฐโเบชเบดเบโเบเบดโเบเบฒเบโ:
$> perl -e 0
เบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเปเบเบตเปเบกเปเบเบตเบกเปเบกเปเบเบงเบฝเบเบชเปเบฒเบฅเบฑเบ "p5p".
เปเบเป perlperf เบญเบญเบเปเบฅเบเปเปเบเบเปเบเปเบเปเบฅเบดเบเบฒเบ onworks.net