[Changed topic, old one is SPAMing the conversation:
the 'gratulations is suggests i 'on a 'illion 'ollars .. :]

On 03/04/2012, at 4:35 AM, Alan Silverstein wrote:

> Gang,
> 
>> Gcc at least has a way to "hint" to the compiler whether a branch is
>> likely to be taken.  Felix actually emits these hints.  However I have
>> not noticed gcc doing anything with them.
> 
> Amusing, it reminds me that in the last year I carefully marked some new
> source functions "inline", but later discovered that gcc was basically
> ignoring my advice and doing whatever the heck it wanted.  Turns out
> "inline" is merely a suggestion, and I don't know of a way to force it
> ("I know what I'm doing and I want to waste space for performance")
> other than reverting to macros.  (Maybe there's some gcc option or
> #pragma I didn't look for...)

Well .. you can try clang 3.0 :)

Or if you want to use a "real" language, use Felix, where
"inline" isn't a hint.

> 
>> A compromise API would be like:  "here is an array size 100, fill it
>> with 100 entries starting at key such-and-such".  You could then
>> optimally process the 100 entries, then get the next 100.
> 
> I vaguely recall (this was > 10 years ago) discussing multi-index
> operations like this.  I know I actually WROTE code that batch-created
> (inserted) a Judy1/L array rather faster than by simple iteration, and
> it worked fine, but I don't know where it is today.  (Given a simple
> array, or was it parallel arrays, of sparse indexes and values, libJudy
> internally-smart code can create a valid Judy tree pretty quickly, I
> think maybe 3X the one-at-a-time mode?)

Actually that would be quite useful.
I actually use Judy as a temporary data structure.
The GC algorithm is basically: find all reachable objects,
then delete everything not reachable.

All-reachable is a set of pointers (Judy) constructed by scanning.
Everything-not-reachable is a set of pointers. Also Judy.
This is constructed because the practice is to run finalisers
on all these objects *first* before deallocation. 

>> Generally, a map of word to "anything" would be good.  This can be
>> done by map to a word, which is a pointer.  At the cost of an
>> indirection and a memory management problem.
> 
> Agreed.  The solution, which we also toyed with but did not implement,
> is to have libJudy offer APIs like JudyL but with arbitrary-sized value
> areas whose memory is managed by libJudy.  In which case don't just
> return a pointer to the caller, have them give you a pointer to the
> data, and its size, and the library does the mem-create and copy-in.

Just an option for two words would be useful.

Why?

Well, there is a serious bug/misconception in the Judy build.
Actually, the Felix clone makes the same mistake.

I'm running on a 32 bit machine. I build only 32 bit Judy.
Stupid. I still need 64 bit integers.

I'm running on a 64 bit machine. I build 64 bit Judy.
Stupid. I still need "int". That's only 32 bits.
Heck, "long" is only 32 bits on Win64.

What should be built is: 32 and 64 bit arrays. On BOTH
32 and 64 bit machines. I think this can be done now.
In addition we should have 32->64 and 64->32
maps (JudyL). And 64->128 (64 bit machine only).

>> A trivial example:  an IP address is 4 bytes, some of which can be 0.
>> Of course this can be done now, with a JudyL instead of S.
> 
> Right.  C strings are what I call "length-terminated" by the NUL bytes.

In the C++ Standard they're called NTBS: Null terminated byte strings.
So that's a technical, formal, and standardised name for "C strings" :-)

> Perl strings for example are "length-associated," and any bit pattern
> can appear in the string.  

Ditto C++ strings, and strings in almost every sane language other
than C. Actually .. *including* C, since C also has length controlled
buffers, just that you have to manage the length yourself.

> You can easily store them in a JudyL
> meta-trie where the top level is the length, but you end up with them
> sorted by length first, then lexicographically, not just
> lexicographically.  You might not care.

This is similar to the property naive Hash-table has.
You lose ordering in return for O(1) operations.

--
john skaller
[email protected]
http://felix-lang.org




------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Judy-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/judy-devel

Reply via email to