Re: good to know: tcl static "regexp" is faster than tcl "string" operation

Liste des GroupesRevenir à cl tcl 
Sujet : Re: good to know: tcl static "regexp" is faster than tcl "string" operation
De : aotto1968 (at) *nospam* t-online.de (aotto1968)
Groupes : comp.lang.tcl
Date : 02. Jan 2025, 20:23:45
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vl6p43$3fp68$1@dont-email.me>
References : 1 2 3 4
User-Agent : Mozilla Thunderbird
On 02.01.25 12:04, eric wrote:
On Tue, 31 Dec 2024 18:33:41 +0000, aotto1968 wrote:
 
....
On 31.12.24 14:46, Rich wrote:
>
But neither is quite as fast as string match (athough regex is close):
  This kind of regexp generates bytecode using string match instead.
The time difference between both is due to the if-else construct.
 tcl::unsupported::disassemble proc test-1
ByteCode 0x0450C010, refCt 1, epoch 18, interp 0x0442C8C0 (epoch 18)
  Source "\n   if {[regexp ^:: $val]} {\n     return true\n   } e..."
  Cmds 4, src 81, inst 36, litObjs 3, aux 0, stkDepth 2, code/src 0.00
  Proc 0x04551488, refCt 1, args 1, compiled locals 1
      slot 0, scalar, arg, "val"
  Commands 4:
      1: pc 0-34, src 4-79        2: pc 0-5, src 9-23
      3: pc 9-20, src 34-44        4: pc 23-34, src 63-74
  Command 1: "if {[regexp ^:: $val]} {\n     return true\n   } else
{..."
  Command 2: "regexp ^:: $val..."
    (0) push1 0     # "::*"
    (2) loadScalar1 %v0     # var "val"
    (4) strmatch +0
    (6) nop
    (7) jumpFalse1 +16     # pc 23
  Command 3: "return true..."
    (9) startCommand +12 1     # next cmd at pc 21, 1 cmds start here
    (18) push1 1     # "true"
    (20) done
    (21) jump1 +14     # pc 35
  Command 4: "return false..."
    (23) startCommand +12 1     # next cmd at pc 35, 1 cmds start here
    (32) push1 2     # "false"
    (34) done
    (35) done
 Eric
--
other stuff
# OLD
proc ::myoo::ClassIs {myR cls} {
   upvar $myR my
   expr {[llength [lsearch -exact -sorted [set $my(__CLASS__)::__SUPER__SORTED__] $cls]] > 0}
}
# want to have
proc ::myoo::ClassIs {myR cls} {
   upvar $myR my
   lsearch -exists -exact -sorted [set $my(__CLASS__)::__SUPER__SORTED__] $cls
}
ONE simple FLAG erase a lot of code.

Date Sujet#  Auteur
31 Dec 24 * good to know: tcl static "regexp" is faster than tcl "string" operation6aotto1968
31 Dec 24 `* Re: good to know: tcl static "regexp" is faster than tcl "string" operation5Rich
31 Dec 24  +- Re: good to know: tcl static "regexp" is faster than tcl "string" operation1aotto1968
31 Dec 24  `* Re: good to know: tcl static "regexp" is faster than tcl "string" operation3aotto1968
2 Jan 25   `* Re: good to know: tcl static "regexp" is faster than tcl "string" operation2eric
2 Jan 25    `- Re: good to know: tcl static "regexp" is faster than tcl "string" operation1aotto1968

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal