[SlugLUG] Question on C

Erich Blume eblume at ucsc.edu
Tue Oct 10 10:07:07 PDT 2006


Thank you for a lot of really great replies. I'll definitely consider
learning C++ as I really /do/ need to learn an OO language besides java
(it's the new BASIC - give me a break), but for now I'm going to tackle this
in C.

But to Suraj's comment that optimization should be language independent, I'd
generally agree, but the application I want to optimize has only one
bottleneck, and that's input/output. I need a high-speed
single-character-at-a-time input device, and I have it from the #perl people
on freenode that PerlIO isn't capable of delivering that speed.

I believe I wrote about this on this list before, but I wrote a perl script
that searches the human genome for the number of times an N-length query (or
list of queries) is found.

It's not *for* anything, but it's thoroughly in the spirit of UCSC
bioinformatics.

Thanks again,
Erich

On 10/10/06 9:43 AM, "Suraj N. Kurapati" <skurapat at ucsc.edu> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Erich Blume wrote:
>> Problem is, while doing that, I completely forgot how to write C.
>> I've re-trained myself up to the basics, but what I really want
>> to do now is write a hash table implementation in C. I can't for
>> the life of me figure out how to get started, though. I've
>> written a few half-hearted structs, slapped down some frivolous
>> typedefs, and even put in a few useless prototypes.
>> 
>> So my question is: where can I get started for this particular
>> project? Who knows of a good resource for easy to understand
>> implementations of hash tables in C? If it's a book, that's fine,
>> but it'd be better if you could point me to a web page or
>> something.
> 
> http://www.sparknotes.com/cs/searching/hashtables/section1.html
> 
>> Also, something that's been bugging me is whether or not I should
>> learn C++. Ever since I learned perl, I've been reluctant to
>> learn C++, being as more or less the only time I ever plan on
>> writing compiled code now will be to optimize. I'd rather
>> optimize in C than C++.
> 
> It doesn't matter what language is used when optimizing, because
> optimization should involve choosing the correct data structures and
> algorithms to solve the problem at hand. This will yield far greater
> improvement than if you had randomly tweaked the code with pointer
> tricks, etc.
> 
> Also, to paraphrase Amdahl's law, "something is only worth
> optimizing if it is used frequently." That is, don't waste your time
> optimizing a bunch of slow code if that slow code is only used, say,
> 2% of the time.
> 
> This leads to the conclusion that in order to optimize, you have to
> know what to optimize. And knowing what to optimize comes from
> profiling!
> 
>> But I've been doing a lot of reading and it sounds like maybe
>> that wasn't such a good appraisal. From the context of a
>> computational biologist, what's the safer bet?
> 
> Here's what you do:
> 
> 0. Compile with a high optimization level: gcc -O3
> 
> 1. Profile your code and find the bottlenecks.
> 
> 2. Improve your choice of data structures and algorithms used in
> those bottlenecks.
> 
> 3. If that doesn't help, try re-writing the really slow parts in a
> lower-level language.
> 
> 4. If even that doesn't work, go ahead and be tricksy with pointers
> and loops. Perhaps if the planets have favorable alignment tonight,
> those tricks might help you. ;-)
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
> 
> iD8DBQFFK83PmV9O7RYnKMcRAhuFAJ9qN+2bRLlwjnNq52DpXd/FxuY8lACePpHW
> h3+UJg0/lZhIsPIHUUaLgWk=
> =36Ru
> -----END PGP SIGNATURE-----
> _______________________________________________
> Sluglug mailing list
> Sluglug at sluglug.ucsc.edu
> http://sluglug.ucsc.edu/cgi-bin/mailman/listinfo/sluglug




More information about the Sluglug mailing list