• last updated 11 hours ago
Constraints: committers
Constraints: files
Constraints: dates

ad_proc reform:

- use nsf::proc for defining ad_procs, when nsf::proc is available

- nsf::proc is part of the environment of XOTcl2 and provides

an efficient, C-implemented argument parser that can replace

the scripted *__arg_parser of OpenACS.

- The benefits are performance and reduced memory consumption.

* Simple functions (where the calling overhead was a large

part of the execution times can become several times faster

(e.g. db_name is 3x faster, cookie handling is 2x faster),

for functions with much db-activities the percentage will

be less.

* The memory consumption (RSS) of a site like OpenACS.org

is reduced by about 15%.

NEW (with nsf::proc)

::ad_get_cookie x: 10.93 microseconds per iteration

::ad_get_cookie ad_session_id: 21.95 microseconds per iteration

::dt_systime: 24.89 microseconds per iteration

::db_name: 8.70 microseconds per iteration

::db_string dbqd.null.g "select version() from dual": 316.66 microseconds per iteration

::ad_convert_to_html "hello world": 102.29 microseconds per iteration

OLD (without nsf::proc)

::ad_get_cookie x: 19.42 microseconds per iteration

::ad_get_cookie ad_session_id: 30.10 microseconds per iteration

::dt_systime: 27.55 microseconds per iteration

::db_name: 32.28 microseconds per iteration

::db_string dbqd.null.g "select version() from dual": 366.69 microseconds per iteration

::ad_convert_to_html "hello world": 160.51 microseconds per iteration


proc mtime cmd {set c 5000

set t [time [list time $cmd $c]];

regexp {^(-?[0-9]+) +} $t _ mS1;

set ms [expr {$mS1*1.0/$c}];

return "[format %6.2f $ms] microseconds per iteration"


set tests {

{::ad_get_cookie x} {::ad_get_cookie ad_session_id} {::dt_systime}

{::db_name} {::db_string dbqd.null.g "select version() from dual"}

{::ad_convert_to_html "hello world"}


foreach t $tests {append ::_ $t ": " [mtime $t] \n}

set ::_


  1. … 9 more files in changeset.
Merging back to HEAD branch oacs-5-8 (using tag vg-merge-oacs-5-8-from-20141027).

  1. … 2547 more files in changeset.
- add commented line for preferdbi

- don't activate dbi per default

- don't depend on dbi_foreach, since this is deprecated

- added stub for defining ::acs::preferdbi for early adaptors

- replace "foreach ... break" idiom by "lassign"

- use global variable ::acs::rootdir similar to ::acs::libdir or ::acs::pageroot

  1. … 1 more file in changeset.
Moving handling NaviServer deprecated ns_info subcommands to 0-acs-init.tcl.

  1. … 2 more files in changeset.
Normalizing string comparison operations into tcl 8.4 operations, enabling byte-code compilation for expressions and many conditionals

  1. … 367 more files in changeset.
merge of changes on oacs-5-0 branch to oacs-5-0-0b4 tag

  1. … 598 more files in changeset.
Added Jeff's tDom check and a couple of related and unrelated changes to config.tcl.

  1. … 1 more file in changeset.

A bunch of "ACS"->"OpenACS" and similar changes

  1. … 28 more files in changeset.

Oops - forgot to commit a file when making my big commit creating


bootstrapper can now load either the Oracle or PostgreSQL acs-kernel

datamodel. It checks on-the-fly for which db is configured in the OpenNSD

database pools allocated to OpenACS. Only acs-kernel is correctly self-

configured at this point.

  1. … 113 more files in changeset.
OpenACS 4.x

  1. … 1321 more files in changeset.
Initial revision

  1. … 1321 more files in changeset.