Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vsood1$3ijij$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vsood1$3ijij$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.tomockey.net!news.samoylyk.net!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: aotto1968 <aotto1968@t-online.de>
Newsgroups: comp.lang.tcl
Subject: TCL PERFORMANCE : how to rid of 'Tcl_EvalObjv' with the 'NRE' stuff
Date: Fri, 4 Apr 2025 15:55:45 +0200
Organization: A noiseless patient Spider
Lines: 61
Message-ID: <vsood1$3ijij$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 04 Apr 2025 15:55:45 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="011f5b117284e035a314a433ade3cc64";
	logging-data="3755603"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18ihMQN+H838aBA5brLajby6sXLBFB2Dyg="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:dWVjosR1S8NzsOInxMu6A44D6JM=
Content-Language: en-US
Bytes: 3774


I'm in the phase of optimization of the new ATL tcl dialect using "myoo" OO extension and right now I'm fight to get
PYTHON speed for an EMPTY callback.

→ The CORE problem is the "Tcl_EvalObjv" which is TO SLOW to beat python.


exec[#7] -> '.../release/example/c/perfclient' '--send-nothing' '--sec' '10' '@' 'python3' '.../example/py/perfserver.py'
....:PerfClientExec                }: start ------------------------ :     result [    count / sec        ]
....:statistics                    }:                 --send-nothing :   504821.1 [  5048489 / 10.000551  ]
                                                                        ^^^^^^^^^^^^^^^^^^^^^
....:PerfClientExec                }: end: ----------------------------------------
exec[#7] -> '.../release/example/c/perfclient' '--send-nothing' '--sec' '10' '@' 'tclsh8.6' '.../example/atl/perfserver.atl'
....:PerfClientExec                }: start ------------------------ :     result [    count / sec        ]
....:statistics                    }:                 --send-nothing :   453027.1 [  4530432 / 10.000355  ]
                                                                        ^^^^^^^^^^^^^^^^^^^^^
....:PerfClientExec                }: end: ----------------------------------------


→ The CORE problem is the "NRE" which eats the performance

  *----------------------------------------------------------------------
  *
  * Tcl_EvalObjv --
  *
  *	This function evaluates a Tcl command that has already been parsed
  *	into words, with one Tcl_Obj holding each word.
  *
  * Results:
  *	The return value is a standard Tcl completion code such as TCL_OK or
  *	TCL_ERROR. A result or error message is left in interp's result.
  *
  * Side effects:
  *	Always pushes a callback. Other side effects depend on the command.
  *
  *----------------------------------------------------------------------
  */

int
Tcl_EvalObjv(
     Tcl_Interp *interp,		/* Interpreter in which to evaluate the
				 * command. Also used for error reporting. */
     int objc,			/* Number of words in command. */
     Tcl_Obj *const objv[],	/* An array of pointers to objects that are
				 * the words that make up the command. */
     int flags)			/* Collection of OR-ed bits that control the
				 * evaluation of the script. Only
				 * TCL_EVAL_GLOBAL, TCL_EVAL_INVOKE and
				 * TCL_EVAL_NOERR are currently supported. */
{
     int result;
     NRE_callback *rootPtr = TOP_CB(interp);

     result = TclNREvalObjv(interp, objc, objv, flags, NULL);
     return TclNRRunCallbacks(interp, result, rootPtr);
}

→ Is there a possible to get an "Tcl_EvalObjvEx" as striped version of all the NRE stuff?


mfg.