473,383 Members | 1,866 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,383 software developers and data experts.

What to do if you've made a new high performance data structure?

OK, so I've invented a new data structure, used for look up tables
(AKA "map" or "dictionary"), which is much faster, and uses less RAM,
than the popular hashing algorithms.

I've written a demonstration library, correctness test framework and
speed testing framework. I've written a comparison using the STL
ext/hash_map, and mine performs 1.57x as fast as that one, and uses
less RAM.

So, assuming someone did invent a new high performance data structure,
which could replace some existing well known data structures, what's
the process for going about letting people know of it?

How do I let the world know? Any answers from people in the know about
data structures for lookup tables, will be very much appreciated!

In case anyone is interested, the information and code is at
www.elfdata.com/dictionary/
Nov 14 '05 #1
4 1451

"Theodore H. Smith" <de****@elfdata.com> wrote in message
news:e2**************************@posting.google.c om...
OK, so I've invented a new data structure, used for look up tables
(AKA "map" or "dictionary"), which is much faster, and uses less RAM,
than the popular hashing algorithms.

I've written a demonstration library, correctness test framework and
speed testing framework. I've written a comparison using the STL
ext/hash_map, and mine performs 1.57x as fast as that one, and uses
less RAM.

So, assuming someone did invent a new high performance data structure,
which could replace some existing well known data structures, what's
the process for going about letting people know of it?

How do I let the world know? Any answers from people in the know about
data structures for lookup tables, will be very much appreciated!

In case anyone is interested, the information and code is at
www.elfdata.com/dictionary/

Interesting work, but your claim about being 1.57x faster puzzles me. I
don't mean to put your method down, but the STL implementation you are using
may be a particularly slow one, for many reasons (e.g. security, threadsafe
etc.). I suggest you test your method on seeveral C++ complilers and OSs.
Also, how fair is your test? There are certain ways to make ones algorithm
perform better over another with certain examples. Of course, to come close
to the speed of the STL is good work, to beat it even better.
Out of interest, is your implementation threadsafe?
Allan
Nov 14 '05 #2
Allan Bruce wrote:
"Theodore H. Smith" <de****@elfdata.com> wrote in message
.... snip ...

I've written a demonstration library, correctness test framework
and speed testing framework. I've written a comparison using the
STL ext/hash_map, and mine performs 1.57x as fast as that one,
and uses less RAM.

.... snip ...
Interesting work, but your claim about being 1.57x faster puzzles
me. I don't mean to put your method down, but the STL implementation

..... snip ....

The STL and C++ are OT on c.l.c. Here we tend to deal with the C
language.

--
Some useful references:
<http://www.ungerhu.com/jxh/clc.welcome.txt>
<http://www.eskimo.com/~scs/C-faq/top.html>
<http://benpfaff.org/writings/clc/off-topic.html>
<http://anubis.dkuug.dk/jtc1/sc22/wg14/www/docs/n869/> (C99)
Nov 14 '05 #3
de****@elfdata.com (Theodore H. Smith) writes:
So, assuming someone did invent a new high performance data structure,
which could replace some existing well known data structures, what's
the process for going about letting people know of it?

How do I let the world know? Any answers from people in the know about
data structures for lookup tables, will be very much appreciated!


You write a paper for a journal or a conference and submit it for
review. If you're not interested in writing for a reviewed
publication, then you write an article and publish it in a
magazine or on your webpage.
--
int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz.\
\n",*q="kl BIcNBFr.NKEzjwCIxNJC";int i=sizeof p/2;char *strchr();int putchar(\
);while(*q){i+=strchr(p,*q++)-p;if(i>=(int)sizeof p)i-=sizeof p-1;putchar(p[i]\
);}return 0;}
Nov 14 '05 #4
> Interesting work, but your claim about being 1.57x faster puzzles me. I
don't mean to put your method down, but the STL implementation you are using
may be a particularly slow one, for many reasons (e.g. security, threadsafe
etc.). I suggest you test your method on seeveral C++ complilers and OSs.
Also, how fair is your test? There are certain ways to make ones algorithm
perform better over another with certain examples. Of course, to come close
to the speed of the STL is good work, to beat it even better.
Out of interest, is your implementation threadsafe?
Allan


To the best of my knowledge (which does increase over time, so I may
later realise it's more unfair than I thought), the only "unfairness"
is that the keys are read in order, which my algorithm is better
suited to. I didn't realise this at the time of writing my code, and
will correct my tests for the next release, by making them either
random, or using a more real-world test.

My implementation is not thread safe. If someone wants that, there is
a feature request section on my website!
(http://www.elfdata.com/dictionary/) Otherwise, a wrapper is
necessary.

I've tested several compilers, and testing several OSs I'll be able to
do after I figured out how to use SourceForge's compile farm!! It's
very confusing, what with it's ssh keys and that.
Nov 14 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Angelos | last post by:
Ok... I have to make this administation area where I have multiple Contents to add edit delete publish . The problem is that I don't know what is the best way of making the forms. At the moment I...
1
by: Vince | last post by:
Hi, I would like to associate a couple of value(SFID and nRecNo) with a byte array. So I tried the following structure : typedef std::vector<BYTE> ByteArray; class CardIndex {
6
by: MLH | last post by:
Runtime error 13 - type mismatch. I get the above error when I create a text box control on a form named and I run the following code in a sub on that same form... If DLookup("", "tblUsers",...
4
by: ahaupt | last post by:
Hi all, I'm trying to get a null value into a sql money field through a SqlCommand in c#. However, I get this lovely message (which sparks loads of happy emotions in this overworked body): ...
2
by: Jeff Brown | last post by:
Hi, I suspect that this isn't possible, but I figured I'd ask. My project has a root namespace, let's say it's "Root", that applies to almost every source file (which is why I've set it as the...
2
by: Neo | last post by:
I put a similar post for CheckBoxes, but i want to use a Radio button & not a CheckBox I have a field named "Male" & this is of SQL BIT data type (SQL Server). How can i bind this field to a...
4
by: arad | last post by:
I was wondering if anybody knows how to get a script to do the following: when the user receives a new email into their inbox I want a small window to pop-up from the bottom right corner of the...
14
by: Martin Wells | last post by:
When I have errors in a program, whether they be compiler errors, linker errors, or if the program crashes when running, I have a list of things I check for initially. If I get an error for...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.