CGI-Minimal

 view release on metacpan or  search on metacpan

lib/CGI/Minimal.pod  view on Meta::CPAN

execution environment). While you can reach around 66 or so invokations per second on
an AMD XP2100+ processor running a simple script using CGI::Minimal, you can exceed
400 per second using mod_perl.

Here are some performance numbers using an extremely simple script
using CGI.pm, CGI::Lite, CGI::Deurl, cgi-lib.pl, CGI::Thin, CGI::Simple
and CGI::Minimal to read a single passed parameter (a=b) and print it.

Also included are a 'null' Perl script and a 'null' compiled C program which
didn't actually read the passed cgi parameter but output the same results
as if they had.

Notably, mod_perl outperforms the compiled C program by
quite a lot for this simple case. Note also that using the :preload
option slowed the CGI::Minimal script down from 66 fetches/second
to only 52 fetches/second when used in standard CGI mode.

With 10 parallel fetches repeated as fast as possible for 30 seconds
with and without mod_perl (if supported) the tests gave the following
results (sorted by speed):

  CGI.pm (3.05)                 via standard CGI -  16 fetches per second
  CGI::Simple (0.075)           via standard CGI -  20 fetches per second
  CGI::Deurl (1.08)             via standard CGI -  36 fetches per second
  CGI::Thin (0.52)              via standard CGI -  38 fetches per second
  CGI::Lite (2.02)              via standard CGI -  52 fetches per second
  CGI::Minimal (1.16, :preload) via standard CGI -  52 fetches per second
  CGI::Minimal (1.16)           via standard CGI -  66 fetches per second
  cgi-lib.pl (2.18)             via standard CGI -  71 fetches per second
  null Perl script              via standard CGI - 103 fetches per second
  null C program                via standard CGI - 174 fetches per second
  CGI::Simple (0.075)           via mod_perl     - 381 fetches per second
  CGI.pm (3.05)                 via mod_perl     - 386 fetches per second
  CGI::Minimal (1.16)           via mod_perl     - 417 fetches per second
  null Perl script              via mod_perl     - 500 fetches per second

=head1 CHANGES

 1.30 13 Jun 2020 - Maintainer update. Relicenced under the MIT License.
                    Small tweaks to build process. Added meta_merge info
                    for GitHub. No functional changes.

 1.29 21 Aug 2007 - Documentation fix to performance hints section. No functional changes.

 1.28 18 Aug 2007 - Improved mod_perl2 handling (patch courtesy of Jeremy Nixon).
                    Added a ':no_subprocess_env' flag to suppress populating
                    the %ENV environment hash. Added a 'subprocess_env'
                    static class method to allow smooth co-existance of
                    ModPerl2 scripts that use ':no_subprocess_env' with ModPerl2
                    scripts that do not on the same server.

 1.27 25 May 2007 - Added example of a command line 'wrapper' script and
                    of using environment variables as an alternate way
                    to test scripts via the command line. Added example
                    for use with FastCGI. Changed behavior for unsupported
                    HTTP methods. The module used to 'croak' for unsupported
                    methods, it now 'carp's instead and treats as a 'GET'
                    (change at suggestion of Roman Mahirov to better support
                    FastCGI).

 1.26 06 Apr 2007 - Added decoding of Javascript/EMCAScript style unicode 
                    escaped (%uxxxx form) parameter data (both to the main
                    'param' method and to the 'url_decode'/'url_encode' methods)
                    at the suggestion of Michael Kröll (the core code for
                    this additional functionality is derived from CGI.pm).

                    Added support for ModPerl2.

                    Fixed META.yml problems introduced with 1.25.

                    Changed POD/POD Coverage tests to only execute if specifically requested
                    
                    Added examples directory and scripts

 1.25 20 Apr 2006 - Added 'allow_hybrid_post_get' class method. Tweaked file permissions.
                    Added regression tests for hybrid forms.

 1.24 23 Sep 2005 - Added 'Carp' to install requirements. Extended build tests.
                    Fixed multi-part form decoding bug in handling of degenerate MIME
                    boundaries. Added fatal errors for mis-calling of param_mime
                    and param_filename methods.

 1.23 18 Sep 2005 - Made Test::More optional in build tests. No functional changes.

 1.22 13 Sep 2005 - Changed POD tests to be more friendly to CPANTS.

 1.21 11 Sep 2005 - Fixed pod coverage build test for compatibility
                    with Perl 5.005.

 1.20 11 Sep 2005 - Fixed issue that caused mod_perl to issue
                    'Use of uninitialized value.' warnings.
                    Extended build tests.

 1.19 10 Sep 2005 - Fixed POD Coverage build test error.

 1.18 08 Sep 2005 - Tweaked prerequisite modules lists. Extended regresssion
                    tests to cover more of the code.

 1.17 04 Sep 2005 - More tweaks to regression tests to work around MS-Windows
                    problems with binary file handles under Perl 5.6.1.

                    Added 'Build.PL' support back in. Added POD tests.
                    Minor documentation tweaks. No functional changes.

 1.16 12 Nov 2004 - Added CGI::Simple to the benchmarks table. Tweaked regresssion
                    tests for MS-Windows. Added 'delete' and 'delete_all'
                    methods and regression tests. Added ':preload' flag for
                    preloading all sub-components at module 'use' time.
                    Fixed bug introduced with 1.15 in param value setting.

 1.15 9 Nov 2004  - Added more regression tests. Tweaked url encoder to comply
                    better with RFC2396. Tuned performance some more. Extended
                    benchmarks table to cover more CGI form decoders.

 1.14 16 Oct 2004 - Tuned module load time (about a 40% improvement) and
                    added performance hints to the documentation.

 1.13 28 Sep 2004 - Removed support for Module::Build from module install.

 1.12 25 Sep 2004 - Tweaked the default form parser to accept ';' as a field seperator
                    in addition to '&'. Change suggested by Peter Karman.



( run in 0.581 second using v1.01-cache-2.11-cpan-39bf76dae61 )