Lukas Fleischer a0afb7ded2 src/llist.c: Add a tail pointer
Adding a tail pointer to each list increases memory footprint by four
bytes, while reducing the runtime of llist_add() from O(n) to O(1). In
testing, the time required to append 100000 elements to a linked list
was reduced from 29.245s to 0.009s.

Our second main concern is to reduce the runtime of llist_add_sorted()
when inserting elements from a presorted list (this is reduced from O(n)
to O(1) as well), since the data files contain appointments in sorted
order and are always processed front to back.

Some local numbers show how this speeds up calcurse startup (test set
with 50000 appointments):

    0.22user 0.12system 0:00.35elapsed 99%CPU (0avgtext+0avgdata 5396maxresident)k
    0inputs+8outputs (0major+1398minor)pagefaults 0swaps

As opposed to the unpatched binary:

    21.97user 0.25system 0:22.23elapsed 99%CPU (0avgtext+0avgdata 5388maxresident)k
    0inputs+48outputs (0major+1396minor)pagefaults 0swaps

This is a ~10000% increase in speed. Timings for reading random input
files generated by a script stay the same (32.391s vs. 31.776s).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-10-05 12:25:48 +02:00
2011-09-06 14:37:56 +02:00
2011-10-05 12:25:48 +02:00
2011-04-22 02:47:37 +02:00
2011-03-03 12:21:16 +01:00
2011-03-03 12:21:16 +01:00
2011-09-06 14:55:30 +02:00
2011-05-24 11:25:13 +02:00

calcurse
========

Read `INSTALL` for instructions on how to build and install calcurse.

Check `TODO` for things that still need to be done.

Browse the file `doc/manual.html` (or its source `doc/manual.txt`) for
narrative descriptions on how to use calcurse.

Package Overview
----------------

You should be reading this file in a directory called: `calcurse-x.x`, where
`x.x` is the current version number. There should be two subdirectories : `src`
and `doc`.  Detailed documentation in HTML format can be found in the `doc`
directory. Calcurse sources can be found in the `src` directory.

Authors
-------

* Frederic Culot (Founder, Lead Developer)
* Lukas Fleischer (Developer)

Contributors
------------

* RegEx support: Erik Saule
* German translation: Michael Schulz, Chris M., Benjamin Moeller
* Spanish translation: Jose Lopez
* Dutch translation: Jeremy Roon
* French translation: Erik Saule
* Russian translation: Aleksey Mechonoshin

Also check the `Thanks` section in the manual for a list of people who have
contributed by reporting bugs, sending fixes, or suggesting improvements.
Description
No description provided
Readme 5.2 MiB
Languages
C 65.7%
Shell 29.6%
Python 3.4%
M4 0.8%
Makefile 0.5%