RE: faster deparse() for string library strtok.e

new topic     » topic index » view thread      » older message » newer message

> -----Original Message-----
> From: jordah ferguson [mailto:jorfergie03 at yahoo.com]

> global function deparse_new(sequence list, integer c)
> object t
> sequence s
>  t= time()
>    if length(list) then
>       s = list[1]
>       for i = 2 to length(list) by 1 do
> 	 s =s&c
>       s=s&list[i]
>       end for
> printf(1,"%.32f my version of deparse\n",time()-t)
>       return s
>    end if
> 
>    return ""
> end function

What about something like:

global function deparse2( sequence list, integer c )
  sequence s
  integer ix, len, slen

  slen = 256
  -- Could be any number, but 256 will probably be enough
  -- for most [english] sentences without having to expand.

  s = repeat( c, slen )
  ix = 1
  for i = 1 to length(list)

    len = length(list[i])
    while slen < ix + len - 1 do
    -- This could be an 'if' stmt if you're sure
    -- that slen was big enough relative to your tokens.
    -- Probably a good assumption if you're dealing with
    -- english words.

      s &= repeat( c, slen )
      slen *= 2
    end while

    s[ix..ix+len-1] = list[i]
    ix += len
  end for

  return s[1..ix-1]
end if

Matt Lewis

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu