Re: Lists, Arrays and Vectors [was Re: [Gimp-developer] Re: Tiny-Fu: A new plug-in for GIMP]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> >Are you sure using lists instead of vectors is the right thing to do?
> > Lists are linked lists and as such accessing the i'th element is O(i). In
> > vectors it is O(1). This can cause an order of complexity increase in
> > handling them.

This is true, but not much of a problem, since most scripts only use either 
the first 1 or 2 elements of arrays or work on typically very short arrays, 
or want to pass a (short) array to PDB, where there is no difference between 
list-construction and setting every element of a vector explicitly (the 
latter possibly being even more inefficient).

> No, I'm not sure. For the few scripts I looked at (and for ease of
> implementation), using a list was the easier route to have something
> functional during the early development stages. Using vectors instead of a
> simple list would mean the ability to use functions which would provide
> rough equivalents to the SIOD interpreters array manipulation functions.

As I understand it, there are even *exact* equivalents to the current "array" 
type. No wonder, since a Lisp vector is a special case of an array 
(one-dimensional). In Script-Fu, "arrays" are indeed vectors.

> I will take a closer look at using vectors. It will simplify the work
> needed to update old Script-Fu scripts for use with Tiny-Fu. I will start
> by converting between list and vector. If the approach works well, I will
> bit the bullet and update the marshalling code to use vectors for the
> *ARRAY types.

I also opt for vector because apart from being the natural Scheme equivalent 
to PDB's one-dimensional arrays, it makes writing plug-ins easier for people 
that have no to little practice in converting common "for/while" loops using 
tail-recursion, and current scripts would work practically unmodified, 
without explicit conversions list->vector that would only cost time (with 
everybody ending up calling these instead of working on lists most of the 
time).

Markus.

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux