From ff7c20938ea3da3ae7d494b35809a2387f497dec Mon Sep 17 00:00:00 2001 From: Tomas Kukosa Date: Wed, 28 Nov 2007 10:18:16 +0000 Subject: Various changes with focus to startup speedup The startup timeout on Win32 is reduced to 80% without assembler and to 50% with assembler usage (which is optional) proto.c - do not look up in filed tree and inserts in two steps but do it at once - next few small speedups - some often called elementary functions can be optionally implemented in assembler - dispart some functions to see more exact result from profiling packet-tpnc.c - do not reallocate memory for each filed svn path=/trunk/; revision=23643 --- epan/asm_utils.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 epan/asm_utils.c (limited to 'epan/asm_utils.c') diff --git a/epan/asm_utils.c b/epan/asm_utils.c new file mode 100644 index 0000000000..98044c14bc --- /dev/null +++ b/epan/asm_utils.c @@ -0,0 +1,67 @@ +/* asm_utils.c + * Functions optionally implemented in assembler + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include +#include +#include + +#include "asm_utils.h" + +/* String comparison func for dfilter_token GTree */ +int +wrs_strcmp(gconstpointer a, gconstpointer b) +{ + return strcmp((const char*)a, (const char*)b); +} + +int +wrs_strcmp_with_data(gconstpointer a, gconstpointer b, gpointer user_data _U_) +{ + return strcmp((const char*)a, (const char*)b); +} + +guchar +wrs_check_charset(const guchar table[256], const char *str) +{ + const char *p = str; + guchar c; + + do { + c = *(p++); + } while (table[c]); + return c; +} + +guint +wrs_str_hash(gconstpointer v) +{ + /* 31 bit hash function */ + const signed char *p = v; + guint32 h = *p; + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + *p; + return h; +} + -- cgit v1.2.1