C:\Perl64\packages>gunzip Readonly-XS-1.05.tar.gz C:\Perl64\packages>tar -xvf Readonly-XS-1.05.tar Readonly-XS-1.05/ Readonly-XS-1.05/Changes Readonly-XS-1.05/Makefile.PL Readonly-XS-1.05/MANIFEST Readonly-XS-1.05/META.yml Readonly-XS-1.05/ppport.h Readonly-XS-1.05/README Readonly-XS-1.05/t/ Readonly-XS-1.05/t/test.t Readonly-XS-1.05/XS.pm Readonly-XS-1.05/XS.xs C:\Perl64\packages>cd Readonly-XS-1.05 C:\Perl64\packages\Readonly-XS-1.05>makefile Checking if your kit is complete... Looks good Writing Makefile for Readonly::XS C:\Perl64\packages\Readonly-XS-1.05>nmake Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. cp XS.pm blib\lib\Readonly\XS.pm C:\perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp -typemap C:\Perl64\lib\ExtUtils\typemap XS.xs > XS.xsc && C:\perl cl -c -I. -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -fp:precise -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN6 XS.c Running Mkbootstrap for Readonly::XS () C:\perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 XS.bs C:\perl64\bin\perl.exe -MExtUtils::Mksymlists -e "Mksymlists('NAME'=>\"Readonly::XS\", 'DLBASE' => 'XS', 'DL_FUNCS' => link -out:blib\arch\auto\Readonly\XS\XS.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"C:\Perl64\li Creating library blib\arch\auto\Readonly\XS\XS.lib and object blib\arch\auto\Readonly\XS\XS.exp Generating code Finished generating code if exist blib\arch\auto\Readonly\XS\XS.dll.manifest mt -nologo -manifest blib\arch\auto\Readonly\XS\XS.dll.manifest -out if exist blib\arch\auto\Readonly\XS\XS.dll.manifest del blib\arch\auto\Readonly\XS\XS.dll.manifest C:\perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 blib\arch\auto\Readonly\XS\XS.dll C:\perl64\bin\perl.exe -MExtUtils::Command -e "cp" -- XS.bs blib\arch\auto\Readonly\XS\XS.bs C:\perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 blib\arch\auto\Readonly\XS\XS.bs C:\Perl64\packages\Readonly-XS-1.05>nmake test Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. C:\perl64\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/test.t .. ok All tests successful. Files=1, Tests=10, 0 wallclock secs ( 0.06 usr + 0.06 sys = 0.13 CPU) Result: PASS C:\Perl64\packages\Readonly-XS-1.05>nmake install Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. Files found in blib\arch: installing files in blib\lib into architecture dependent library tree Installing C:\Perl64\site\lib\auto\Readonly\XS\XS.bs Installing C:\Perl64\site\lib\auto\Readonly\XS\XS.dll Installing C:\Perl64\site\lib\auto\Readonly\XS\XS.exp Installing C:\Perl64\site\lib\auto\Readonly\XS\XS.lib Installing C:\Perl64\site\lib\auto\Readonly\XS\XS.pdb Installing C:\Perl64\site\lib\Readonly\XS.pm Appending installation info to C:\Perl64\lib/perllocal.pod #### #! perl -slw use strict; use Benchmark qw[ cmpthese ]; use constant { TRUE => 1, FALSE => 0, VALUE => 12345, }; use Readonly; Readonly::Scalar my $true => 1; Readonly::Scalar my $false => 0; Readonly::Scalar my $value => 12345; sub usingConstant { for( 1 .. 1e6 ) { if( TRUE ) { my $sum = VALUE * VALUE; } if( FALSE ) { ;## Never called } } } sub usingLiterals { for( 1 .. 1e6 ) { if( 1 ) { my $sum = 12345 * 12345; } if( 0 ) { ;## Never called } } } sub usingReadonly { for( 1 .. 1e6 ) { if( $true ) { my $sum = $value * $value; } if( $false ) { ;## Never called } } } cmpthese -1, { const => sub{ usingConstant() }, literals => sub{ usingLiterals() }, Readonly => sub{ usingReadonly() }, }; #### c:\test>ROvCONST.pl Rate Readonly literals const Readonly 4.06/s -- -44% -49% literals 7.21/s 78% -- -9% const 7.90/s 95% 10% --