mirror of
https://github.com/systemd/systemd.git
synced 2025-03-08 08:58:27 +03:00
journal: optimize iteration by returning previously found candidate entry
In next_beyond_location() when the JournalFile's location type is LOCATION_SEEK, it means there's nothing to do, because we already have the location of the candidate entry. Do an early return. Note that now next_beyond_location() does not anymore guarantee on return that the entry is mapped, but previous patches made sure the caller does not care. This optimization is at least as good as "journal: optimize iteration: skip files that cannot improve current candidate entry" was. Timing results on my workstation, using: $ time ./journalctl -q --since=2014-06-01 --until=2014-07-01 > /dev/null Before "Revert "journal: optimize iteration: skip files that cannot improve current candidate entry": real 0m5.349s user 0m5.166s sys 0m0.181s Now: real 0m3.901s user 0m3.724s sys 0m0.176s
This commit is contained in:
parent
6e693b42dc
commit
7943f42275
@ -742,6 +742,12 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc
|
||||
f->last_n_entries = n_entries;
|
||||
|
||||
if (f->last_direction == direction && f->current_offset > 0) {
|
||||
/* LOCATION_SEEK here means we did the work in a previous
|
||||
* iteration and the current location already points to a
|
||||
* candidate entry. */
|
||||
if (f->location_type == LOCATION_SEEK)
|
||||
return 1;
|
||||
|
||||
cp = f->current_offset;
|
||||
|
||||
r = journal_file_move_to_object(f, OBJECT_ENTRY, cp, &c);
|
||||
|
Loading…
x
Reference in New Issue
Block a user