mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 00:08:50 -05:00
819c28bf8c
This reduces the number of regcomp() calls when parsing delta entries in the database from once per entry to once for the entire context handle by storing the compiled regex data on the handle itself. Just as we do with the cURL handle, we initialize it the first time it is needed and free it when releasing the handle. A few other small tweaks to the parsing function also take place, including using the stack to store the transient and short file size string while parsing it. When parsing a sync database with 1378 delta entries, this reduces the time of a `pacman -Sl deltas` operation by 50% from 0.22s to 0.12s. Signed-off-by: Dan McGee <dan@archlinux.org>
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
/*
|
|
* delta.h
|
|
*
|
|
* Copyright (c) 2006-2011 Pacman Development Team <pacman-dev@archlinux.org>
|
|
* Copyright (c) 2007-2006 by Judd Vinet <jvinet@zeroflux.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef _ALPM_DELTA_H
|
|
#define _ALPM_DELTA_H
|
|
|
|
#include <sys/types.h> /* off_t */
|
|
|
|
#include "alpm.h"
|
|
|
|
alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line);
|
|
void _alpm_delta_free(alpm_delta_t *delta);
|
|
alpm_delta_t *_alpm_delta_dup(const alpm_delta_t *delta);
|
|
off_t _alpm_shortest_delta_path(alpm_handle_t *handle, alpm_list_t *deltas,
|
|
const char *to, alpm_list_t **path);
|
|
|
|
/* max percent of package size to download deltas */
|
|
#define MAX_DELTA_RATIO 0.7
|
|
|
|
#endif /* _ALPM_DELTA_H */
|
|
|
|
/* vim: set ts=2 sw=2 noet: */
|