public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* changing a collision resolution strategy of the symbol table of identifiers
@ 2013-10-20 13:17 Roman Gareev
  2013-10-20 13:22 ` Ondřej Bílka
  2013-10-31 12:39 ` Florian Weimer
  0 siblings, 2 replies; 6+ messages in thread
From: Roman Gareev @ 2013-10-20 13:17 UTC (permalink / raw)
  To: gcc-patches

Dear gcc contributors,

Recently I came across the list of "ideas for speeding up GCC"
(http://gcc.gnu.org/wiki/Speedup_areas). Among others, there was
suggested to replace identifier hash table with other data structure.

Please find attached a patch, that switches the resolution strategy of
a hash table used in the symbol table of identifiers from open
addressing to separate chaining with linked list. I would be very
grateful for your comments, feedback and ideas about further
enhancements to gcc, in which I could take a part. I am pursuing
master of science and looking for thesis theme, that is compiler
related.

Below are results of testing and the patch.

During testing of the linux kernel (3.8.8) compilation time, the
acquired results were the following: increasing by 0.17% for the
version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
by 0.598% for trunk (this are average values).


Tested x86_64-unknown-linux-gnu, applying to 4.8.0, 4.8.1 and trunk.


diff --git a/gcc/stringpool.c b/gcc/stringpool.c

index f4d0dae..cc696f7 100644

--- a/gcc/stringpool.c

+++ b/gcc/stringpool.c

@@ -241,12 +241,8 @@ gt_pch_nx (unsigned char *x, gt_pointer_operator
op, void *cookie)

/* SPD is saved in the PCH file and holds the information needed

to restore the string pool. */

-struct GTY(()) string_pool_data {

- ht_identifier_ptr *

- GTY((length ("%h.nslots"),

- nested_ptr (union tree_node, "%h ? GCC_IDENT_TO_HT_IDENT (%h) : NULL",

- "%h ? HT_IDENT_TO_GCC_IDENT (%h) : NULL")))

- entries;

+struct GTY((user)) string_pool_data {

+ ht_identifier_ptr * entries;

unsigned int nslots;

unsigned int nelements;

};

@@ -284,4 +280,113 @@ gt_pch_restore_stringpool (void)

spd = NULL;

}

+/* User-provided GC marking routines for the struct ht_identifier.
They are using

+ only in GC marking routines for the struct string_pool_data. */

+

+extern void ht_identifier_ggc_mx (void *x_p);

+extern void ht_identifier_pch_nx (void *x_p);

+extern void ht_identifier_pch_nx (void *this_obj, void *x_p,
gt_pointer_operator op, void *cookie);

+

+void

+ht_identifier_ggc_mx (void *x_p)

+{

+ struct ht_identifier * x = (struct ht_identifier *)x_p;

+ struct ht_identifier * xlimit = x;

+ while (ggc_test_and_set_mark (xlimit))

+ xlimit = ((*xlimit).next);

+ while (x != xlimit)

+ {

+ union tree_node * const x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT
(((*x).next)) : NULL;

+ gt_ggc_m_9tree_node (x0);

+ x = ((*x).next);

+ }

+}

+

+void

+ht_identifier_pch_nx (void *x_p)

+{

+ struct ht_identifier * x = (struct ht_identifier *)x_p;

+ struct ht_identifier * xlimit = x;

+ while (gt_pch_note_object (xlimit, xlimit, ht_identifier_pch_nx))

+ xlimit = ((*xlimit).next);

+ while (x != xlimit)

+ {

+ union tree_node * const x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT
(((*x).next)) : NULL;

+ gt_pch_n_9tree_node (x0);

+ x = ((*x).next);

+ }

+}

+

+void

+ht_identifier_pch_nx (void *this_obj, void *x_p, gt_pointer_operator
op, void *cookie)

+{

+ struct ht_identifier * x = (struct ht_identifier *)x_p;

+ op (&((*x).str), cookie);

+ union tree_node * x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT
(((*x).next)) : NULL;

+ op (&(x0), cookie);

+ (*x).next = (x0) ? (GCC_IDENT_TO_HT_IDENT ((x0))) : NULL;

+}

+

+/* A pointer walker for entries of the struct string_pool_data. */

+

+void

+string_pool_data_pch_entries_walker (void *this_obj, void *x_p,
gt_pointer_operator op, void *cookie)

+{

+ struct string_pool_data * x ATTRIBUTE_UNUSED = (struct string_pool_data *)x_p;

+ size_t l0 = (size_t)(((*x)).nslots);

+ if ((*x).entries != NULL)

+ {

+ size_t i0;

+ for (i0 = 0; i0 != (size_t)(l0); i0++)

+ {

+ union tree_node * x0 = ((*x).entries[i0]) ? HT_IDENT_TO_GCC_IDENT
(((*x).entries[i0])) : NULL;

+ op (&(x0), cookie);

+ (*x).entries[i0] = (x0) ? (GCC_IDENT_TO_HT_IDENT ((x0))) : NULL;

+ }

+ }

+}

+

+/* User-provided GC marking routines for the struct string_pool_data. */

+

+void

+gt_ggc_mx (string_pool_data *x)

+{

+ size_t l0 = (size_t)(((*x)).nslots);

+ if ((*x).entries != NULL)

+ {

+ size_t i0;

+ for (i0 = 0; i0 != (size_t)(l0); i0++)

+ {

+ ht_identifier_ggc_mx ((*x).entries[i0]);

+ union tree_node * const x0 = ((*x).entries[i0]) ?
HT_IDENT_TO_GCC_IDENT (((*x).entries[i0])) : NULL;

+ gt_ggc_m_9tree_node (x0);

+ }

+ ggc_mark ((*x).entries);

+ }

+}

+

+void

+gt_pch_nx (string_pool_data *x)

+{

+ size_t l0 = (size_t)(((*x)).nslots);

+ if ((*x).entries != NULL)

+ {

+ size_t i0;

+ for (i0 = 0; i0 != (size_t)(l0); i0++)

+ {

+ union tree_node * const x1 = ((*x).entries[i0]) ?
HT_IDENT_TO_GCC_IDENT (((*x).entries[i0])) : NULL;

+ gt_pch_n_9tree_node (x1);

+ ht_identifier_pch_nx ((*x).entries[i0]);

+ }

+ gt_pch_note_object ((*x).entries, x, string_pool_data_pch_entries_walker);

+ }

+}

+

+void

+gt_pch_nx (string_pool_data *x, gt_pointer_operator op, void *cookie)

+{

+ if ((*x).entries != NULL)

+ op (&((*x).entries), cookie);

+}

+

#include "gt-stringpool.h"

diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h

index a4ea719..88a0bd3 100644

--- a/libcpp/include/symtab.h

+++ b/libcpp/include/symtab.h

@@ -28,10 +28,14 @@ along with this program; see the file COPYING3. If not see

deeply within another object. */

typedef struct ht_identifier ht_identifier;

typedef struct ht_identifier *ht_identifier_ptr;

-struct GTY(()) ht_identifier {

+struct GTY((chain_next ("%h.next"))) ht_identifier {

const unsigned char *str;

unsigned int len;

unsigned int hash_value;

+ struct ht_identifier

+ GTY((nested_ptr (union tree_node, "%h ? (GCC_IDENT_TO_HT_IDENT (%h)) : NULL",

+ "%h ? HT_IDENT_TO_GCC_IDENT (%h) : NULL")))

+ *next;

};

#define HT_LEN(NODE) ((NODE)->len)

diff --git a/libcpp/symtab.c b/libcpp/symtab.c

index dee8626..a4e05a0 100644

--- a/libcpp/symtab.c

+++ b/libcpp/symtab.c

@@ -30,7 +30,6 @@ along with this program; see the file COPYING3. If not see

existing entry with a potential new one. */

static unsigned int calc_hash (const unsigned char *, size_t);

-static void ht_expand (cpp_hash_table *);

static double approx_sqrt (double);

/* A deleted entry. */

@@ -66,13 +65,14 @@ ht_create (unsigned int order)

(void (*) (void *)) free);

obstack_alignment_mask (&table->stack) = 0;

-

table->entries = XCNEWVEC (hashnode, nslots);

table->entries_owned = true;

table->nslots = nslots;

+ table->nelements = 0;

return table;

}

+

/* Frees all memory associated with a hash table. */

void

@@ -102,140 +102,58 @@ ht_lookup_with_hash (cpp_hash_table *table,
const unsigned char *str,

size_t len, unsigned int hash,

enum ht_lookup_option insert)

{

- unsigned int hash2;

unsigned int index;

- unsigned int deleted_index = table->nslots;

size_t sizemask;

hashnode node;

-

sizemask = table->nslots - 1;

index = hash & sizemask;

table->searches++;

-

node = table->entries[index];

-

- if (node != NULL)

- {

- if (node == DELETED)

- deleted_index = index;

- else if (node->hash_value == hash

- && HT_LEN (node) == (unsigned int) len

- && !memcmp (HT_STR (node), str, len))

- return node;

-

- /* hash2 must be odd, so we're guaranteed to visit every possible

- location in the table during rehashing. */

- hash2 = ((hash * 17) & sizemask) | 1;

-

- for (;;)

- {

- table->collisions++;

- index = (index + hash2) & sizemask;

- node = table->entries[index];

- if (node == NULL)

- break;

-

- if (node == DELETED)

- {

- if (deleted_index != table->nslots)

- deleted_index = index;

- }

- else if (node->hash_value == hash

- && HT_LEN (node) == (unsigned int) len

- && !memcmp (HT_STR (node), str, len))

- return node;

- }

- }

-

+ while(node != NULL)

+ {

+ if (HT_LEN (node) == (unsigned int) len

+ && !memcmp (HT_STR (node), str, len))

+ return node;

+ node = node->next;

+ }

if (insert == HT_NO_INSERT)

return NULL;

-

- /* We prefer to overwrite the first deleted slot we saw. */

- if (deleted_index != table->nslots)

- index = deleted_index;

-

node = (*table->alloc_node) (table);

- table->entries[index] = node;

-

HT_LEN (node) = (unsigned int) len;

node->hash_value = hash;

-

+ node->next = table->entries[index];

+ table->entries[index] = node;

+ table->nelements++;

if (table->alloc_subobject)

- {

- char *chars = (char *) table->alloc_subobject (len + 1);

- memcpy (chars, str, len);

- chars[len] = '\0';

- HT_STR (node) = (const unsigned char *) chars;

- }

+ {

+ char *chars = (char *) table->alloc_subobject (len + 1);

+ memcpy (chars, str, len);

+ chars[len] = '\0';

+ HT_STR (node) = (const unsigned char *) chars;

+ }

else

HT_STR (node) = (const unsigned char *) obstack_copy0 (&table->stack,

str, len);

-

- if (++table->nelements * 4 >= table->nslots * 3)

- /* Must expand the string table. */

- ht_expand (table);

-

return node;

}

-/* Double the size of a hash table, re-hashing existing entries. */

-

-static void

-ht_expand (cpp_hash_table *table)

-{

- hashnode *nentries, *p, *limit;

- unsigned int size, sizemask;

-

- size = table->nslots * 2;

- nentries = XCNEWVEC (hashnode, size);

- sizemask = size - 1;

-

- p = table->entries;

- limit = p + table->nslots;

- do

- if (*p && *p != DELETED)

- {

- unsigned int index, hash, hash2;

-

- hash = (*p)->hash_value;

- index = hash & sizemask;

-

- if (nentries[index])

- {

- hash2 = ((hash * 17) & sizemask) | 1;

- do

- {

- index = (index + hash2) & sizemask;

- }

- while (nentries[index]);

- }

- nentries[index] = *p;

- }

- while (++p < limit);

-

- if (table->entries_owned)

- free (table->entries);

- table->entries_owned = true;

- table->entries = nentries;

- table->nslots = size;

-}

/* For all nodes in TABLE, callback CB with parameters TABLE->PFILE,

the node, and V. */

void

ht_forall (cpp_hash_table *table, ht_cb cb, const void *v)

{

- hashnode *p, *limit;

-

- p = table->entries;

- limit = p + table->nslots;

- do

- if (*p && *p != DELETED)

- {

- if ((*cb) (table->pfile, *p, v) == 0)

- break;

- }

- while (++p < limit);

+ hashnode tmp;

+ for(unsigned int i = 0; i < table->nslots; i++)

+ {

+ tmp = table->entries[i];

+ while(tmp != NULL)

+ {

+ if ((*cb) (table->pfile, tmp, v) == 0)

+ return;

+ tmp = tmp->next;

+ }

+ }

}

/* Like ht_forall, but a nonzero return from the callback means that

@@ -243,17 +161,29 @@ ht_forall (cpp_hash_table *table, ht_cb cb, const void *v)

void

ht_purge (cpp_hash_table *table, ht_cb cb, const void *v)

{

- hashnode *p, *limit;

-

- p = table->entries;

- limit = p + table->nslots;

- do

- if (*p && *p != DELETED)

+ hashnode tmp;

+ hashnode old;

+ for(unsigned int i = 0; i < table->nslots; i++)

+ {

+ old = table->entries[i];

+ while(old != NULL)

+ {

+ tmp = old->next;

+ if (tmp != NULL && (*cb) (table->pfile, tmp, v))

{

- if ((*cb) (table->pfile, *p, v))

- *p = DELETED;

+ old->next = tmp->next;

+ tmp = old->next;

+ table->nelements--;

}

- while (++p < limit);

+ else

+ old = tmp;

+ }

+ old = table->entries[i];

+ if(old != NULL && (*cb) (table->pfile, old, v))

+ {

+ table->entries[i] = old->next;

+ }

+ }

}

/* Restore the hash table. */

@@ -278,7 +208,6 @@ ht_dump_statistics (cpp_hash_table *table)

size_t nelts, nids, overhead, headers;

size_t total_bytes, longest, deleted = 0;

double sum_of_squares, exp_len, exp_len2, exp2_len;

- hashnode *p, *limit;

#define SCALE(x) ((unsigned long) ((x) < 1024*10 \

? (x) \

@@ -288,22 +217,21 @@ ht_dump_statistics (cpp_hash_table *table)

#define LABEL(x) ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M'))

total_bytes = longest = sum_of_squares = nids = 0;

- p = table->entries;

- limit = p + table->nslots;

- do

- if (*p == DELETED)

- ++deleted;

- else if (*p)

- {

- size_t n = HT_LEN (*p);

-

- total_bytes += n;

- sum_of_squares += (double) n * n;

- if (n > longest)

- longest = n;

- nids++;

- }

- while (++p < limit);

+ hashnode tmp;

+ for(unsigned int i = 0; i < table->nslots; i++)

+ {

+ tmp = table->entries[i];

+ while(tmp != NULL)

+ {

+ size_t n = HT_LEN (tmp);

+ total_bytes += n;

+ sum_of_squares += (double) n * n;

+ if (n > longest)

+ longest = n;

+ nids++;

+ tmp = tmp->next;

+ }

+ }

nelts = table->nelements;

overhead = obstack_memory_used (&table->stack) - total_bytes;

@@ -360,3 +288,4 @@ approx_sqrt (double x)

while (d > .0001);

return s;

}

+

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: changing a collision resolution strategy of the symbol table of identifiers
  2013-10-20 13:17 changing a collision resolution strategy of the symbol table of identifiers Roman Gareev
@ 2013-10-20 13:22 ` Ondřej Bílka
  2013-11-04 18:41   ` Roman Gareev
  2013-10-31 12:39 ` Florian Weimer
  1 sibling, 1 reply; 6+ messages in thread
From: Ondřej Bílka @ 2013-10-20 13:22 UTC (permalink / raw)
  To: Roman Gareev; +Cc: gcc-patches

On Sun, Oct 20, 2013 at 06:55:40PM +0600, Roman Gareev wrote:
> Dear gcc contributors,
> 
> Recently I came across the list of "ideas for speeding up GCC"
> (http://gcc.gnu.org/wiki/Speedup_areas). Among others, there was
> suggested to replace identifier hash table with other data structure.
> 
> Please find attached a patch, that switches the resolution strategy of
> a hash table used in the symbol table of identifiers from open
> addressing to separate chaining with linked list. I would be very
> grateful for your comments, feedback and ideas about further
> enhancements to gcc, in which I could take a part. I am pursuing
> master of science and looking for thesis theme, that is compiler
> related.
> 
> Below are results of testing and the patch.
> 
> During testing of the linux kernel (3.8.8) compilation time, the
> acquired results were the following: increasing by 0.17% for the
> version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
> by 0.598% for trunk (this are average values).
> 
> 
> Tested x86_64-unknown-linux-gnu, applying to 4.8.0, 4.8.1 and trunk.
> 
> 
> diff --git a/gcc/stringpool.c b/gcc/stringpool.c
> 
> index f4d0dae..cc696f7 100644
> 
> --- a/gcc/stringpool.c
> 
> +++ b/gcc/stringpool.c
> 
> @@ -241,12 +241,8 @@ gt_pch_nx (unsigned char *x, gt_pointer_operator
> op, void *cookie)
> 
> /* SPD is saved in the PCH file and holds the information needed
> 
> to restore the string pool. */
> 
> -struct GTY(()) string_pool_data {
> 
> - ht_identifier_ptr *
> 
> - GTY((length ("%h.nslots"),
> 
Mail client broke it?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: changing a collision resolution strategy of the symbol table of identifiers
  2013-10-20 13:17 changing a collision resolution strategy of the symbol table of identifiers Roman Gareev
  2013-10-20 13:22 ` Ondřej Bílka
@ 2013-10-31 12:39 ` Florian Weimer
  2013-11-04 19:23   ` Roman Gareev
  1 sibling, 1 reply; 6+ messages in thread
From: Florian Weimer @ 2013-10-31 12:39 UTC (permalink / raw)
  To: Roman Gareev, gcc-patches

On 10/20/2013 02:55 PM, Roman Gareev wrote:
> During testing of the linux kernel (3.8.8) compilation time, the
> acquired results were the following: increasing by 0.17% for the
> version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
> by 0.598% for trunk (this are average values).

Can you share the raw numbers?  Are the differences statistically 
significant?

-- 
Florian Weimer / Red Hat Product Security Team

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: changing a collision resolution strategy of the symbol table of identifiers
  2013-10-20 13:22 ` Ondřej Bílka
@ 2013-11-04 18:41   ` Roman Gareev
  0 siblings, 0 replies; 6+ messages in thread
From: Roman Gareev @ 2013-11-04 18:41 UTC (permalink / raw)
  To: Ondřej Bílka; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1772 bytes --]

2013/10/20 Ondřej Bílka <neleai@seznam.cz>:
> On Sun, Oct 20, 2013 at 06:55:40PM +0600, Roman Gareev wrote:
>> Dear gcc contributors,
>>
>> Recently I came across the list of "ideas for speeding up GCC"
>> (http://gcc.gnu.org/wiki/Speedup_areas). Among others, there was
>> suggested to replace identifier hash table with other data structure.
>>
>> Please find attached a patch, that switches the resolution strategy of
>> a hash table used in the symbol table of identifiers from open
>> addressing to separate chaining with linked list. I would be very
>> grateful for your comments, feedback and ideas about further
>> enhancements to gcc, in which I could take a part. I am pursuing
>> master of science and looking for thesis theme, that is compiler
>> related.
>>
>> Below are results of testing and the patch.
>>
>> During testing of the linux kernel (3.8.8) compilation time, the
>> acquired results were the following: increasing by 0.17% for the
>> version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
>> by 0.598% for trunk (this are average values).
>>
>>
>> Tested x86_64-unknown-linux-gnu, applying to 4.8.0, 4.8.1 and trunk.
>>
>>
>> diff --git a/gcc/stringpool.c b/gcc/stringpool.c
>>
>> index f4d0dae..cc696f7 100644
>>
>> --- a/gcc/stringpool.c
>>
>> +++ b/gcc/stringpool.c
>>
>> @@ -241,12 +241,8 @@ gt_pch_nx (unsigned char *x, gt_pointer_operator
>> op, void *cookie)
>>
>> /* SPD is saved in the PCH file and holds the information needed
>>
>> to restore the string pool. */
>>
>> -struct GTY(()) string_pool_data {
>>
>> - ht_identifier_ptr *
>>
>> - GTY((length ("%h.nslots"),
>>
> Mail client broke it?
Sorry, an error occurred somewhere. Below is an attachment with the patch.

[-- Attachment #2: patch --]
[-- Type: application/octet-stream, Size: 11857 bytes --]

diff --git a/gcc/stringpool.c b/gcc/stringpool.c
index f4d0dae..9725d84 100644
--- a/gcc/stringpool.c
+++ b/gcc/stringpool.c
@@ -241,12 +241,8 @@ gt_pch_nx (unsigned char *x, gt_pointer_operator op, void *cookie)
 /* SPD is saved in the PCH file and holds the information needed
    to restore the string pool.  */
 
-struct GTY(()) string_pool_data {
-  ht_identifier_ptr *
-    GTY((length ("%h.nslots"),
-	 nested_ptr (union tree_node, "%h ? GCC_IDENT_TO_HT_IDENT (%h) : NULL",
-		     "%h ? HT_IDENT_TO_GCC_IDENT (%h) : NULL")))
-    entries;
+struct GTY((user)) string_pool_data {
+  ht_identifier_ptr *  entries;
   unsigned int nslots;
   unsigned int nelements;
 };
@@ -284,4 +280,113 @@ gt_pch_restore_stringpool (void)
   spd = NULL;
 }
 
+/* User-provided GC marking routines for the struct ht_identifier. They are using
+   only in GC marking routines for the struct string_pool_data.  */
+
+extern void ht_identifier_ggc_mx (void *x_p);
+extern void ht_identifier_pch_nx (void *x_p);
+extern void ht_identifier_pch_nx (void *this_obj, void *x_p, gt_pointer_operator op, void *cookie);
+
+void
+ht_identifier_ggc_mx (void *x_p)
+{
+  struct ht_identifier * x = (struct ht_identifier *)x_p;
+  struct ht_identifier * xlimit = x;
+  while (ggc_test_and_set_mark (xlimit))
+    xlimit = ((*xlimit).next);
+  while (x != xlimit)
+    {
+      union tree_node * const x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT (((*x).next)) : NULL;
+      gt_ggc_m_9tree_node (x0);
+      x = ((*x).next);
+    }
+}
+
+void
+ht_identifier_pch_nx (void *x_p)
+{
+  struct ht_identifier * x = (struct ht_identifier *)x_p;
+  struct ht_identifier * xlimit = x;
+  while (gt_pch_note_object (xlimit, xlimit, ht_identifier_pch_nx))
+    xlimit = ((*xlimit).next);
+  while (x != xlimit)
+    {
+      union tree_node * const x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT (((*x).next)) : NULL;
+      gt_pch_n_9tree_node (x0);
+      x = ((*x).next);
+    }
+}
+
+void
+ht_identifier_pch_nx (ATTRIBUTE_UNUSED void *this_obj, void *x_p, gt_pointer_operator op, void *cookie)
+{
+  struct ht_identifier * x = (struct ht_identifier *)x_p;
+  op (&((*x).str), cookie);
+  union tree_node * x0 = ((*x).next) ? HT_IDENT_TO_GCC_IDENT (((*x).next)) : NULL;
+  op (&(x0), cookie);
+  (*x).next = (x0) ? (GCC_IDENT_TO_HT_IDENT ((x0))) : NULL;
+}
+
+/* A pointer walker for entries of the struct string_pool_data.  */
+
+void
+string_pool_data_pch_entries_walker (ATTRIBUTE_UNUSED void *this_obj, void *x_p, gt_pointer_operator op, void *cookie)
+{
+  struct string_pool_data * x ATTRIBUTE_UNUSED = (struct string_pool_data *)x_p;
+  size_t l0 = (size_t)(((*x)).nslots);
+  if ((*x).entries != NULL)
+  {
+    size_t i0;
+    for (i0 = 0; i0 != (size_t)(l0); i0++)
+    {
+      union tree_node * x0 = ((*x).entries[i0]) ? HT_IDENT_TO_GCC_IDENT (((*x).entries[i0])) : NULL;
+      op (&(x0), cookie);
+      (*x).entries[i0] = (x0) ? (GCC_IDENT_TO_HT_IDENT ((x0))) : NULL;
+    }
+  }
+}
+
+/* User-provided GC marking routines for the struct string_pool_data.  */
+
+void
+gt_ggc_mx (string_pool_data *x)
+{
+  size_t l0 = (size_t)(((*x)).nslots);
+  if ((*x).entries != NULL)
+  {
+    size_t i0;
+    for (i0 = 0; i0 != (size_t)(l0); i0++)
+    {
+      ht_identifier_ggc_mx ((*x).entries[i0]);
+      union tree_node * const x0 = ((*x).entries[i0]) ? HT_IDENT_TO_GCC_IDENT (((*x).entries[i0])) : NULL;
+      gt_ggc_m_9tree_node (x0);
+    }
+    ggc_mark ((*x).entries);
+  }
+}
+
+void
+gt_pch_nx (string_pool_data *x)
+{
+  size_t l0 = (size_t)(((*x)).nslots);
+  if ((*x).entries != NULL)
+  {
+    size_t i0;
+    for (i0 = 0; i0 != (size_t)(l0); i0++)
+    {
+      union tree_node * const x1 = ((*x).entries[i0]) ? HT_IDENT_TO_GCC_IDENT (((*x).entries[i0])) : NULL;
+      gt_pch_n_9tree_node (x1);
+      ht_identifier_pch_nx ((*x).entries[i0]);
+    }
+    gt_pch_note_object ((*x).entries, x, string_pool_data_pch_entries_walker);
+  }
+}
+
+void
+gt_pch_nx (string_pool_data *x, gt_pointer_operator op, void *cookie)
+{
+  if ((*x).entries != NULL)
+    op (&((*x).entries), cookie);
+}
+
 #include "gt-stringpool.h"
diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h
index a4ea719..88a0bd3 100644
--- a/libcpp/include/symtab.h
+++ b/libcpp/include/symtab.h
@@ -28,10 +28,14 @@ along with this program; see the file COPYING3.  If not see
    deeply within another object.  */
 typedef struct ht_identifier ht_identifier;
 typedef struct ht_identifier *ht_identifier_ptr;
-struct GTY(()) ht_identifier {
+struct GTY((chain_next ("%h.next"))) ht_identifier {
   const unsigned char *str;
   unsigned int len;
   unsigned int hash_value;
+  struct ht_identifier
+    GTY((nested_ptr (union tree_node, "%h ? (GCC_IDENT_TO_HT_IDENT (%h)) : NULL",
+                     "%h ? HT_IDENT_TO_GCC_IDENT (%h) : NULL")))
+    *next;
 };
 
 #define HT_LEN(NODE) ((NODE)->len)
diff --git a/libcpp/symtab.c b/libcpp/symtab.c
index dee8626..a4e05a0 100644
--- a/libcpp/symtab.c
+++ b/libcpp/symtab.c
@@ -30,7 +30,6 @@ along with this program; see the file COPYING3.  If not see
    existing entry with a potential new one.  */
 
 static unsigned int calc_hash (const unsigned char *, size_t);
-static void ht_expand (cpp_hash_table *);
 static double approx_sqrt (double);
 
 /* A deleted entry.  */
@@ -66,13 +65,14 @@ ht_create (unsigned int order)
 		  (void (*) (void *)) free);
 
   obstack_alignment_mask (&table->stack) = 0;
-
   table->entries = XCNEWVEC (hashnode, nslots);
   table->entries_owned = true;
   table->nslots = nslots;
+  table->nelements = 0;
   return table;
 }
 
+
 /* Frees all memory associated with a hash table.  */
 
 void
@@ -102,140 +102,58 @@ ht_lookup_with_hash (cpp_hash_table *table, const unsigned char *str,
 		     size_t len, unsigned int hash,
 		     enum ht_lookup_option insert)
 {
-  unsigned int hash2;
   unsigned int index;
-  unsigned int deleted_index = table->nslots;
   size_t sizemask;
   hashnode node;
-
   sizemask = table->nslots - 1;
   index = hash & sizemask;
   table->searches++;
-
   node = table->entries[index];
-
-  if (node != NULL)
-    {
-      if (node == DELETED)
-	deleted_index = index;
-      else if (node->hash_value == hash
-	       && HT_LEN (node) == (unsigned int) len
-	       && !memcmp (HT_STR (node), str, len))
-	return node;
-
-      /* hash2 must be odd, so we're guaranteed to visit every possible
-	 location in the table during rehashing.  */
-      hash2 = ((hash * 17) & sizemask) | 1;
-
-      for (;;)
-	{
-	  table->collisions++;
-	  index = (index + hash2) & sizemask;
-	  node = table->entries[index];
-	  if (node == NULL)
-	    break;
-
-	  if (node == DELETED)
-	    {
-	      if (deleted_index != table->nslots)
-		deleted_index = index;
-	    }
-	  else if (node->hash_value == hash
-		   && HT_LEN (node) == (unsigned int) len
-		   && !memcmp (HT_STR (node), str, len))
-	    return node;
-	}
-    }
-
+  while(node != NULL)
+  {
+    if (HT_LEN (node) == (unsigned int) len
+        && !memcmp (HT_STR (node), str, len))
+    return node;
+    node = node->next;
+  }
   if (insert == HT_NO_INSERT)
     return NULL;
-
-  /* We prefer to overwrite the first deleted slot we saw.  */
-  if (deleted_index != table->nslots)
-    index = deleted_index;
-
   node = (*table->alloc_node) (table);
-  table->entries[index] = node;
-
   HT_LEN (node) = (unsigned int) len;
   node->hash_value = hash;
-
+  node->next = table->entries[index];
+  table->entries[index] = node;
+  table->nelements++;
   if (table->alloc_subobject)
-    {
-      char *chars = (char *) table->alloc_subobject (len + 1);
-      memcpy (chars, str, len);
-      chars[len] = '\0';
-      HT_STR (node) = (const unsigned char *) chars;
-    }
+  {
+    char *chars = (char *) table->alloc_subobject (len + 1);
+    memcpy (chars, str, len);
+    chars[len] = '\0';
+    HT_STR (node) = (const unsigned char *) chars;
+  }
   else
     HT_STR (node) = (const unsigned char *) obstack_copy0 (&table->stack,
 							   str, len);
-
-  if (++table->nelements * 4 >= table->nslots * 3)
-    /* Must expand the string table.  */
-    ht_expand (table);
-
   return node;
 }
 
-/* Double the size of a hash table, re-hashing existing entries.  */
-
-static void
-ht_expand (cpp_hash_table *table)
-{
-  hashnode *nentries, *p, *limit;
-  unsigned int size, sizemask;
-
-  size = table->nslots * 2;
-  nentries = XCNEWVEC (hashnode, size);
-  sizemask = size - 1;
-
-  p = table->entries;
-  limit = p + table->nslots;
-  do
-    if (*p && *p != DELETED)
-      {
-	unsigned int index, hash, hash2;
-
-	hash = (*p)->hash_value;
-	index = hash & sizemask;
-
-	if (nentries[index])
-	  {
-	    hash2 = ((hash * 17) & sizemask) | 1;
-	    do
-	      {
-		index = (index + hash2) & sizemask;
-	      }
-	    while (nentries[index]);
-	  }
-	nentries[index] = *p;
-      }
-  while (++p < limit);
-
-  if (table->entries_owned)
-    free (table->entries);
-  table->entries_owned = true;
-  table->entries = nentries;
-  table->nslots = size;
-}
 
 /* For all nodes in TABLE, callback CB with parameters TABLE->PFILE,
    the node, and V.  */
 void
 ht_forall (cpp_hash_table *table, ht_cb cb, const void *v)
 {
-  hashnode *p, *limit;
-
-  p = table->entries;
-  limit = p + table->nslots;
-  do
-    if (*p && *p != DELETED)
-      {
-	if ((*cb) (table->pfile, *p, v) == 0)
-	  break;
-      }
-  while (++p < limit);
+  hashnode tmp;
+  for(unsigned int i = 0; i < table->nslots; i++)
+  {
+    tmp = table->entries[i];
+    while(tmp != NULL)
+    {
+      if ((*cb) (table->pfile, tmp, v) == 0)
+        return;
+      tmp = tmp->next;
+    }
+  }
 }
 
 /* Like ht_forall, but a nonzero return from the callback means that
@@ -243,17 +161,29 @@ ht_forall (cpp_hash_table *table, ht_cb cb, const void *v)
 void
 ht_purge (cpp_hash_table *table, ht_cb cb, const void *v)
 {
-  hashnode *p, *limit;
-
-  p = table->entries;
-  limit = p + table->nslots;
-  do
-    if (*p && *p != DELETED)
+  hashnode tmp;
+  hashnode old;
+  for(unsigned int i = 0; i < table->nslots; i++)
+  {
+    old = table->entries[i];
+    while(old != NULL)
+    {
+      tmp = old->next;
+      if (tmp != NULL && (*cb) (table->pfile, tmp, v))
       {
-	if ((*cb) (table->pfile, *p, v))
-	  *p = DELETED;
+        old->next = tmp->next;
+        tmp = old->next;
+        table->nelements--;
       }
-  while (++p < limit);
+      else					
+        old = tmp;
+    }
+    old = table->entries[i];
+    if(old != NULL && (*cb) (table->pfile, old, v))
+    {
+      table->entries[i] = old->next;
+    }
+  }
 }
 
 /* Restore the hash table.  */
@@ -278,7 +208,6 @@ ht_dump_statistics (cpp_hash_table *table)
   size_t nelts, nids, overhead, headers;
   size_t total_bytes, longest, deleted = 0;
   double sum_of_squares, exp_len, exp_len2, exp2_len;
-  hashnode *p, *limit;
 
 #define SCALE(x) ((unsigned long) ((x) < 1024*10 \
 		  ? (x) \
@@ -288,22 +217,21 @@ ht_dump_statistics (cpp_hash_table *table)
 #define LABEL(x) ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M'))
 
   total_bytes = longest = sum_of_squares = nids = 0;
-  p = table->entries;
-  limit = p + table->nslots;
-  do
-    if (*p == DELETED)
-      ++deleted;
-    else if (*p)
-      {
-	size_t n = HT_LEN (*p);
-
-	total_bytes += n;
-	sum_of_squares += (double) n * n;
-	if (n > longest)
-	  longest = n;
-	nids++;
-      }
-  while (++p < limit);
+  hashnode tmp;
+  for(unsigned int i = 0; i < table->nslots; i++)
+  {
+    tmp = table->entries[i];
+    while(tmp != NULL)
+    {
+      size_t n = HT_LEN (tmp);
+      total_bytes += n;
+      sum_of_squares += (double) n * n;
+      if (n > longest)
+        longest = n;
+      nids++;
+      tmp = tmp->next;
+    }
+  }
 
   nelts = table->nelements;
   overhead = obstack_memory_used (&table->stack) - total_bytes;
@@ -360,3 +288,4 @@ approx_sqrt (double x)
   while (d > .0001);
   return s;
 }
+

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: changing a collision resolution strategy of the symbol table of identifiers
  2013-10-31 12:39 ` Florian Weimer
@ 2013-11-04 19:23   ` Roman Gareev
  2014-02-03  9:32     ` Roman Gareev
  0 siblings, 1 reply; 6+ messages in thread
From: Roman Gareev @ 2013-11-04 19:23 UTC (permalink / raw)
  To: Florian Weimer; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 625 bytes --]

2013/10/31 Florian Weimer <fweimer@redhat.com>:
> On 10/20/2013 02:55 PM, Roman Gareev wrote:
>>
>> During testing of the linux kernel (3.8.8) compilation time, the
>> acquired results were the following: increasing by 0.17% for the
>> version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
>> by 0.598% for trunk (this are average values).
>
>
> Can you share the raw numbers?  Are the differences statistically
> significant?
>
> --
> Florian Weimer / Red Hat Product Security Team

These are the row numbers. I'll share results of checking for
statistical significance as soon as more compilations are made.

[-- Attachment #2: results --]
[-- Type: application/octet-stream, Size: 6571 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

4.8.0 (original)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  487.86  --  422.94  --  42.62  --  95%  --  0  --
----------------------------------------------------------
  2  --  485.16  --  422.24  --  41.18  --  95%  --  0  --
----------------------------------------------------------
  3  --  486.89  --  423.01  --  42.00  --  95%  --  0  --
----------------------------------------------------------
  4  --  486.17  --  423.66  --  41.62  --  95%  --  0  --
----------------------------------------------------------
  5  --  487.17  --  423.23  --  42.68  --  95%  --  0  --
----------------------------------------------------------
  6  --  486.89  --  422.83  --  42.42  --  95%  --  0  --
----------------------------------------------------------
  7  --  486.34  --  422.77  --  41.93  --  95%  --  0  --
----------------------------------------------------------

4.8.0 (modified)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  481.95  --  420.75  --  40.98  --  95%  --  0  --
----------------------------------------------------------
  2  --  485.57  --  423.00  --  41.56  --  95%  --  0  --
----------------------------------------------------------
  3  --  485.82  --  422.68  --  41.92  --  95%  --  0  --
----------------------------------------------------------
  4  --  486.02  --  422.03  --  42.80  --  95%  --  0  --
----------------------------------------------------------
  5  --  485.61  --  422.52  --  41.72  --  95%  --  0  --
----------------------------------------------------------
  6  --  486.03  --  422.93  --  42.04  --  95%  --  0  --
----------------------------------------------------------
  7  --  485.24  --  422.82  --  41.91  --  95%  --  0  --
----------------------------------------------------------

4.8.1 (original)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  487.95  --  424.16  --  41.45  --  95%  --  0  --
----------------------------------------------------------
  2  --  485.89  --  423.65  --  41.49  --  95%  --  0  --
----------------------------------------------------------
  3  --  484.36  --  422.42  --  40.76  --  95%  --  0  --
----------------------------------------------------------
  4  --  487.93  --  424.02  --  41.23  --  95%  --  0  --
----------------------------------------------------------
  5  --  486.93  --  424.36  --  40.44  --  95%  --  0  --
----------------------------------------------------------
  6  --  487.61  --  424.16  --  40.92  --  95%  --  0  --
----------------------------------------------------------
  7  --  487.70  --  424.76  --  41.58  --  95%  --  0  --
----------------------------------------------------------

4.8.1 (modified)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  483.24  --  418.47  --  39.99  --  94%  --  0  --
----------------------------------------------------------
  2  --  481.98  --  419.40  --  41.00  --  95%  --  0  --
----------------------------------------------------------
  3  --  482.08  --  418.83  --  41.28  --  95%  --  0  --
----------------------------------------------------------
  4  --  480.95  --  419.41  --  40.60  --  95%  --  0  --
----------------------------------------------------------
  5  --  481.51  --  419.21  --  40.80  --  95%  --  0  --
----------------------------------------------------------
  6  --  482.25  --  419.94  --  40.18  --  95%  --  0  --
----------------------------------------------------------
  7  --  481.28  --  419.09  --  40.63  --  95%  --  0  --
----------------------------------------------------------

trunk (original)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  719.73  --  663.96  --  35.68  --  97%  --  0  --
----------------------------------------------------------
  2  --  717.48  --  662.88  --  35.18  --  97%  --  0  --
----------------------------------------------------------
  3  --  721.42  --  664.37  --  35.99  --  97%  --  0  --
----------------------------------------------------------
  4  --  725.35  --  663.66  --  40.06  --  97%  --  0  --
----------------------------------------------------------
  5  --  720.52  --  663.32  --  36.51  --  97%  --  0  --
----------------------------------------------------------
  6  --  719.90  --  662.49  --  37.04  --  95%  --  0  --
----------------------------------------------------------
  7  --  724.49  --  663.20  --  39.94  --  97%  --  0  --
----------------------------------------------------------

trunk (modified)
----------------------------------------------------------
  №  --    1     --    2     --   3     --   4   --  5  --
----------------------------------------------------------
  1  --  725.64  --  667.29  --  38.63  --  97%  --  0  --
----------------------------------------------------------
  2  --  722.95  --  667.04  --  35.94  --  97%  --  0  --
----------------------------------------------------------
  3  --  726.58  --  669.46  --  36.29  --  97%  --  0  --
----------------------------------------------------------
  4  --  741.31  --  666.50  --  41.03  --  95%  --  0  --
----------------------------------------------------------
  5  --  742.09  --  665.92  --  36.21  --  94%  --  0  --
----------------------------------------------------------
  6  --  721.18  --  665.31  --  37.20  --  97%  --  0  --
----------------------------------------------------------
  7  --  728.59  --  667.55  --  39.46  --  97%  --  0  --
----------------------------------------------------------

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: changing a collision resolution strategy of the symbol table of identifiers
  2013-11-04 19:23   ` Roman Gareev
@ 2014-02-03  9:32     ` Roman Gareev
  0 siblings, 0 replies; 6+ messages in thread
From: Roman Gareev @ 2014-02-03  9:32 UTC (permalink / raw)
  To: Florian Weimer; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 990 bytes --]

These are statistically significant differences: increasing by 0.23%
for the version 4.8.0, increasing by 0.21% for the version 4.8.1,
decreasing by 0.686% for trunk.


These are new row numbers:

2013-11-05 Roman Gareev <gareevroman@gmail.com>:
> 2013/10/31 Florian Weimer <fweimer@redhat.com>:
>> On 10/20/2013 02:55 PM, Roman Gareev wrote:
>>>
>>> During testing of the linux kernel (3.8.8) compilation time, the
>>> acquired results were the following: increasing by 0.17% for the
>>> version 4.8.0, increasing by 1.12% for the version 4.8.1, decreasing
>>> by 0.598% for trunk (this are average values).
>>
>>
>> Can you share the raw numbers?  Are the differences statistically
>> significant?
>>
>> --
>> Florian Weimer / Red Hat Product Security Team
>
> These are the row numbers. I'll share results of checking for
> statistical significance as soon as more compilations are made.



-- 
                                   C уважением, Гареев Роман.

[-- Attachment #2: trunk_original --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
756.73 	669.27 	36.91 	93% 	0   
755.37 	667.11 	37.19 	93% 	0   
759.71 	670.28 	37.81 	93% 	0   
761.52 	668.91 	38.83 	92% 	0   
759.66 	667.76 	39.80 	93% 	0   
757.70 	668.42 	37.57 	93% 	0   
757.98 	667.64 	40.21 	93% 	0   
757.66 	667.82 	38.23 	93% 	0   
756.32 	668.93 	36.92 	93% 	0   
759.26 	668.74 	38.39 	93% 	0   
759.11 	670.37 	36.82 	93% 	0   
756.74 	667.79 	38.09 	93% 	0   
757.00 	669.29 	36.98 	93% 	0   
759.45 	670.90 	37.62 	93% 	0   
756.11 	668.11 	36.73 	93% 	0   
756.23 	668.33 	36.70 	93% 	0   
755.71 	666.41 	38.08 	93% 	0   
760.07 	669.13 	38.67 	93% 	0   
757.57 	668.05 	38.11 	93% 	0   
759.04 	667.78 	39.66 	93% 	0   
759.59 	668.70 	38.34 	93% 	0   
757.51 	670.26 	37.09 	93% 	0   
761.06 	667.92 	40.04 	93% 	0   
759.25 	668.45 	38.80 	93% 	0   
756.80 	668.79 	37.41 	93% 	0   
755.88 	666.67 	37.72 	93% 	0   
757.63 	669.10 	37.56 	93% 	0   
759.92 	668.80 	40.00 	93% 	0   
753.89 	668.74 	35.49 	93% 	0   
757.03 	667.29 	36.71 	92% 	0   
752.55 	667.41 	36.03 	93% 	0   
751.99 	666.10 	35.30 	93% 	0   
755.49 	669.78 	36.88 	93% 	0   
757.92 	668.16 	38.72 	93% 	0   
756.74 	667.40 	38.30 	93% 	0   
757.88 	668.34 	38.24 	93% 	0   
758.44 	667.99 	39.86 	93% 	0   
760.37 	668.32 	39.80 	93% 	0   
758.38 	669.42 	37.31 	93% 	0   
758.91 	669.35 	36.83 	93% 	0   
759.84 	667.18 	40.26 	93% 	0   
755.87 	667.97 	36.67 	93% 	0   
759.26 	669.02 	38.89 	93% 	0   
754.36 	666.17 	36.52 	93% 	0   
757.10 	667.43 	38.56 	93% 	0   
758.47 	668.24 	39.18 	93% 	0   
759.52 	669.11 	39.06 	93% 	0   
759.01 	668.98 	38.67 	93% 	0   
757.97 	667.85 	37.94 	93% 	0   
755.57 	666.77 	36.82 	93% 	0   
755.24 	666.34 	37.77 	93% 	0   
758.65 	667.29 	39.24 	93% 	0   
755.43 	667.76 	38.84 	93% 	0   
760.85 	669.76 	39.00 	93% 	0   
755.84 	667.76 	36.87 	93% 	0   
757.80 	667.58 	40.46 	93% 	0   
762.07 	670.22 	40.06 	93% 	0   
761.48 	671.94 	37.87 	93% 	0   
762.33 	670.71 	37.02 	92% 	0   
758.17 	667.44 	38.60 	93% 	0   
758.78 	668.58 	39.90 	93% 	0   
756.15 	669.24 	37.44 	93% 	0   
756.19 	668.63 	37.80 	93% 	0   
754.50 	667.80 	35.88 	93% 	0   
757.29 	668.80 	38.42 	93% 	0   
754.04 	667.60 	38.20 	93% 	0   
759.90 	669.89 	38.10 	93% 	0   
757.26 	668.18 	38.96 	93% 	0   
754.03 	667.04 	36.46 	93% 	0   
758.68 	667.20 	39.46 	93% 	0   
758.68 	667.82 	39.14 	93% 	0   
759.39 	668.91 	39.76 	93% 	0   
760.64 	669.82 	39.98 	93% 	0   
759.74 	668.93 	40.22 	93% 	0   
757.80 	667.75 	39.09 	93% 	0   
758.18 	668.10 	38.82 	93% 	0   
756.13 	667.15 	38.05 	93% 	0   
755.75 	669.46 	36.66 	93% 	0   
759.30 	668.31 	38.51 	93% 	0   
760.41 	669.65 	39.52 	93% 	0   
763.46 	669.20 	36.48 	92% 	0   
758.74 	668.57 	38.52 	93% 	0   
763.28 	669.42 	41.04 	93% 	0   
757.82 	667.94 	38.79 	93% 	0   
757.59 	669.14 	36.69 	93% 	0   
759.47 	669.29 	38.75 	93% 	0   
758.72 	669.41 	39.00 	93% 	0   
755.08 	666.73 	36.36 	93% 	0   
754.86 	666.49 	37.48 	93% 	0   
758.76 	668.71 	38.90 	93% 	0   
757.09 	668.53 	36.88 	93% 	0   
759.19 	668.34 	38.27 	93% 	0   
755.27 	668.30 	37.39 	93% 	0   
758.19 	668.64 	37.63 	93% 	0   
753.97 	667.35 	37.13 	93% 	0   
756.55 	668.51 	36.68 	93% 	0   
755.19 	666.20 	38.10 	93% 	0   
757.65 	666.23 	40.29 	93% 	0   
758.38 	668.64 	38.20 	93% 	0   
757.79 	668.11 	37.15 	93% 	0   

[-- Attachment #3: trunk _modified --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
762.42 	673.30 	39.37 	93% 	0   
766.16 	674.28 	40.40 	93% 	0   
760.48 	673.04 	37.27 	93% 	0   
770.04 	673.43 	37.06 	92% 	0   
760.55 	672.72 	36.78 	93% 	0   
757.30 	672.08 	36.12 	93% 	0   
763.45 	674.84 	37.30 	93% 	0   
764.06 	675.86 	37.30 	93% 	0   
759.77 	672.23 	36.88 	93% 	0   
763.34 	673.50 	37.34 	93% 	0   
763.16 	672.33 	37.48 	93% 	0   
761.91 	673.03 	37.40 	93% 	0   
760.06 	672.09 	37.86 	93% 	0   
762.78 	673.57 	37.17 	93% 	0   
760.30 	672.94 	36.85 	93% 	0   
768.12 	672.20 	37.59 	92% 	0   
759.48 	672.23 	35.97 	93% 	0   
761.52 	674.03 	37.03 	93% 	0   
760.91 	672.82 	37.77 	93% 	0   
760.23 	672.17 	37.36 	93% 	0   
765.41 	675.40 	39.55 	93% 	0   
764.22 	674.01 	39.51 	93% 	0   
764.33 	674.22 	38.57 	93% 	0   
762.60 	673.73 	37.60 	93% 	0   
757.90 	671.32 	35.30 	93% 	0   
762.07 	673.71 	37.78 	93% 	0   
765.26 	674.31 	39.31 	93% 	0   
760.91 	673.24 	37.02 	93% 	0   
759.19 	673.11 	36.54 	93% 	0   
763.20 	672.51 	37.84 	93% 	0   
762.02 	672.58 	38.07 	93% 	0   
762.96 	673.30 	37.88 	93% 	0   
758.85 	671.40 	36.28 	93% 	0   
761.25 	672.54 	37.21 	93% 	0   
763.45 	673.72 	38.82 	93% 	0   
759.79 	673.63 	37.05 	93% 	0   
764.22 	674.14 	39.07 	93% 	0   
762.46 	674.38 	38.61 	93% 	0   
760.31 	672.87 	37.02 	93% 	0   
764.55 	675.58 	37.30 	93% 	0   
757.73 	672.26 	36.47 	93% 	0   
760.63 	673.12 	37.18 	93% 	0   
761.42 	672.80 	38.96 	93% 	0   
761.64 	672.44 	37.86 	93% 	0   
766.00 	677.32 	37.10 	93% 	0   
763.54 	673.64 	37.89 	93% 	0   
757.37 	672.55 	36.78 	93% 	0   
763.51 	672.82 	38.71 	93% 	0   
760.91 	673.55 	37.15 	93% 	0   
761.77 	674.29 	37.45 	93% 	0   
768.12 	674.71 	40.17 	93% 	0   
764.72 	674.99 	37.72 	93% 	0   
762.22 	673.56 	38.63 	93% 	0   
762.12 	673.26 	36.92 	93% 	0   
764.24 	673.40 	39.07 	93% 	0   
763.53 	673.60 	38.40 	93% 	0   
760.52 	673.30 	36.20 	93% 	0   
763.85 	673.98 	38.40 	93% 	0   
759.18 	672.29 	36.58 	93% 	0   
766.49 	676.94 	37.76 	93% 	0   
763.92 	673.04 	38.97 	93% 	0   
761.40 	671.79 	37.82 	93% 	0   
765.09 	675.17 	38.92 	93% 	0   
761.01 	673.51 	37.90 	93% 	0   
762.92 	673.64 	37.82 	93% 	0   
762.79 	675.38 	36.52 	93% 	0   
769.15 	675.88 	41.32 	93% 	0   
762.32 	673.14 	39.32 	93% 	0   
761.79 	673.60 	36.21 	93% 	0   
761.27 	672.03 	37.74 	93% 	0   
762.75 	673.59 	38.65 	93% 	0   
765.57 	673.56 	40.07 	93% 	0   
761.58 	672.84 	37.90 	93% 	0   
762.81 	674.38 	37.76 	93% 	0   
760.52 	672.20 	37.14 	93% 	0   
765.26 	675.13 	40.03 	93% 	0   
761.91 	673.07 	37.42 	93% 	0   
760.98 	674.95 	37.31 	93% 	0   
764.39 	673.67 	38.30 	93% 	0   
767.91 	677.01 	37.64 	93% 	0   
766.71 	677.53 	37.18 	93% 	0   
762.64 	673.94 	37.57 	93% 	0   
760.01 	673.01 	37.34 	93% 	0   
760.64 	672.96 	37.36 	93% 	0   
761.07 	673.21 	37.78 	93% 	0   
764.44 	672.96 	39.40 	93% 	0   
766.00 	673.33 	40.55 	93% 	0   
762.02 	671.60 	36.74 	92% 	0   
761.24 	672.06 	38.30 	93% 	0   
761.51 	672.02 	38.07 	93% 	0   
762.49 	673.43 	37.74 	93% 	0   
760.42 	672.11 	36.53 	93% 	0   
764.44 	674.69 	37.48 	93% 	0   
761.82 	673.30 	38.38 	93% 	0   
765.11 	673.65 	39.79 	93% 	0   
762.86 	673.48 	36.73 	93% 	0   
764.00 	674.44 	38.83 	93% 	0   
764.13 	673.15 	38.25 	93% 	0   
761.55 	674.09 	35.88 	93% 	0   
764.16 	674.00 	39.93 	93% 	0   

[-- Attachment #4: 4.8.1_original --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
516.79 	423.99 	39.76 	89% 	0   
513.78 	424.36 	37.59 	89% 	0   
516.98 	426.51 	38.39 	89% 	0   
516.81 	424.98 	40.34 	90% 	0   
514.85 	423.72 	38.01 	89% 	0   
516.75 	425.60 	39.78 	90% 	0   
512.04 	424.77 	35.88 	89% 	0   
515.62 	425.36 	38.70 	90% 	0   
515.47 	424.60 	40.69 	90% 	0   
513.64 	422.13 	39.54 	89% 	0   
515.42 	423.79 	38.00 	89% 	0   
515.63 	423.70 	38.07 	89% 	0   
517.96 	426.57 	41.34 	90% 	0   
517.21 	425.30 	40.24 	90% 	0   
517.73 	425.08 	41.51 	90% 	0   
518.93 	426.45 	40.43 	89% 	0   
518.85 	425.14 	42.16 	90% 	0   
515.48 	425.17 	38.44 	89% 	0   
516.33 	424.24 	38.75 	89% 	0   
516.68 	425.80 	38.80 	89% 	0   
516.07 	423.06 	39.39 	89% 	0   
518.11 	424.94 	40.06 	89% 	0   
516.90 	425.04 	39.84 	89% 	0   
517.61 	425.70 	39.20 	89% 	0   
514.70 	423.84 	37.83 	89% 	0   
516.49 	423.98 	38.76 	89% 	0   
523.89 	427.33 	41.96 	89% 	0   
518.32 	424.15 	41.80 	89% 	0   
517.91 	424.54 	40.36 	89% 	0   
514.09 	424.38 	38.76 	90% 	0   
515.51 	423.44 	39.10 	89% 	0   
516.15 	423.90 	40.41 	89% 	0   
518.66 	424.84 	39.61 	89% 	0   
515.36 	423.85 	38.61 	89% 	0   
515.11 	424.67 	38.19 	89% 	0   
518.90 	425.96 	40.06 	89% 	0   
515.38 	424.11 	38.54 	89% 	0   
520.30 	426.07 	40.48 	89% 	0   
516.84 	424.44 	39.84 	89% 	0   
516.51 	424.48 	38.42 	89% 	0   
515.86 	422.84 	38.98 	89% 	0   
516.57 	424.75 	39.37 	89% 	0   
514.03 	424.46 	38.14 	89% 	0   
517.62 	424.87 	39.54 	89% 	0   
512.72 	422.95 	38.72 	90% 	0   
512.89 	424.41 	37.36 	90% 	0   
519.44 	425.01 	40.65 	89% 	0   
515.29 	424.77 	37.26 	89% 	0   
515.24 	424.48 	38.04 	89% 	0   
512.96 	424.48 	37.74 	90% 	0   
515.60 	423.11 	39.88 	89% 	0   
517.44 	425.52 	39.74 	89% 	0   
519.50 	425.80 	41.64 	89% 	0   
517.98 	426.26 	39.26 	89% 	0   
513.85 	424.47 	38.41 	90% 	0   
514.27 	423.07 	38.90 	89% 	0   
516.24 	425.83 	38.12 	89% 	0   
517.71 	425.42 	39.59 	89% 	0   
517.99 	424.87 	38.67 	89% 	0   
516.68 	425.05 	39.90 	89% 	0   
517.37 	424.30 	39.25 	89% 	0   
516.26 	424.26 	37.91 	89% 	0   
514.27 	424.24 	38.34 	89% 	0   
518.45 	426.48 	38.55 	89% 	0   
515.16 	425.37 	37.56 	89% 	0   
519.29 	426.43 	41.55 	90% 	0   
517.24 	426.17 	39.44 	90% 	0   
515.42 	423.90 	38.58 	89% 	0   
514.91 	423.82 	38.22 	89% 	0   
515.68 	424.34 	40.47 	90% 	0   
514.28 	424.07 	38.45 	89% 	0   
517.08 	425.24 	39.11 	89% 	0   
511.81 	423.12 	37.64 	90% 	0   
513.74 	423.81 	38.02 	89% 	0   
515.46 	425.26 	38.27 	89% 	0   
517.13 	424.80 	39.83 	89% 	0   
521.38 	425.88 	41.60 	89% 	0   
515.45 	423.55 	39.00 	89% 	0   
513.46 	422.92 	38.05 	89% 	0   
515.08 	423.84 	38.07 	89% 	0   
515.89 	424.97 	39.17 	89% 	0   
514.25 	423.84 	37.28 	89% 	0   
513.49 	423.06 	38.06 	89% 	0   
512.58 	423.34 	36.80 	89% 	0   
523.83 	426.69 	42.07 	89% 	0   
517.69 	425.81 	40.65 	90% 	0   
518.46 	425.16 	39.96 	89% 	0   
514.61 	424.48 	38.70 	90% 	0   
519.68 	425.46 	39.72 	89% 	0   
517.93 	425.26 	40.92 	90% 	0   
515.89 	425.68 	37.88 	89% 	0   
515.83 	424.55 	39.64 	89% 	0   
515.52 	424.71 	37.38 	89% 	0   
520.71 	426.32 	40.18 	89% 	0   
519.63 	426.10 	40.01 	89% 	0   
517.68 	424.84 	40.18 	89% 	0   
514.95 	423.80 	39.28 	89% 	0   
517.18 	425.50 	39.29 	89% 	0   
504.46 	425.27 	40.85 	92% 	0   
513.65 	423.64 	38.30 	89% 	0   

[-- Attachment #5: 4.8.1_modified --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
517.44 	425.43 	38.73 	89% 	0   
515.76 	423.20 	38.51 	89% 	0   
514.25 	424.78 	36.24 	89% 	0   
520.24 	424.77 	42.02 	89% 	0   
514.41 	424.22 	40.29 	90% 	0   
518.50 	423.94 	40.22 	89% 	0   
514.79 	424.18 	38.48 	89% 	0   
512.61 	424.86 	36.05 	89% 	0   
511.90 	422.41 	37.56 	89% 	0   
513.37 	424.19 	39.46 	90% 	0   
518.40 	424.44 	40.51 	89% 	0   
518.28 	424.88 	38.91 	89% 	0   
517.84 	424.05 	40.51 	89% 	0   
515.45 	423.83 	38.06 	89% 	0   
515.56 	422.90 	39.00 	89% 	0   
516.10 	422.99 	39.29 	89% 	0   
516.36 	425.79 	38.37 	89% 	0   
517.10 	424.72 	40.54 	89% 	0   
516.30 	424.44 	39.99 	89% 	0   
517.00 	425.52 	37.74 	89% 	0   
514.64 	422.75 	38.62 	89% 	0   
514.33 	421.56 	38.96 	89% 	0   
517.99 	423.73 	40.20 	89% 	0   
513.22 	421.74 	37.96 	89% 	0   
517.36 	423.68 	39.52 	89% 	0   
504.25 	423.78 	41.40 	92% 	0   
519.27 	425.11 	40.25 	89% 	0   
515.21 	424.00 	39.06 	89% 	0   
516.49 	425.42 	38.99 	89% 	0   
516.50 	422.45 	38.52 	89% 	0   
516.08 	424.12 	39.02 	89% 	0   
512.93 	423.02 	37.86 	89% 	0   
512.80 	422.22 	37.50 	89% 	0   
513.89 	423.24 	37.82 	89% 	0   
512.77 	422.71 	38.68 	89% 	0   
518.34 	423.78 	38.84 	89% 	0   
518.33 	423.70 	41.99 	89% 	0   
515.50 	424.61 	37.13 	89% 	0   
517.57 	423.81 	40.85 	89% 	0   
514.93 	425.28 	36.00 	89% 	0   
513.82 	422.81 	37.70 	89% 	0   
515.98 	424.47 	39.26 	89% 	0   
515.13 	423.14 	37.60 	89% 	0   
529.26 	422.01 	38.82 	87% 	0   
515.43 	423.94 	38.53 	89% 	0   
518.02 	425.02 	40.75 	89% 	0   
522.97 	426.71 	42.82 	89% 	0   
512.29 	423.33 	37.73 	89% 	0   
516.26 	423.25 	40.36 	89% 	0   
516.89 	423.12 	40.30 	89% 	0   
517.17 	425.41 	38.52 	89% 	0   
516.78 	424.02 	39.44 	89% 	0   
513.85 	423.38 	38.30 	89% 	0   
518.57 	424.16 	40.34 	89% 	0   
517.54 	423.38 	40.80 	89% 	0   
517.49 	423.12 	40.09 	89% 	0   
517.85 	425.89 	38.28 	89% 	0   
516.42 	423.90 	37.58 	89% 	0   
515.19 	423.09 	39.46 	89% 	0   
513.59 	423.10 	38.03 	89% 	0   
518.46 	425.13 	40.54 	89% 	0   
513.11 	421.58 	38.02 	89% 	0   
517.27 	424.09 	39.57 	89% 	0   
514.77 	424.41 	37.47 	89% 	0   
513.42 	423.44 	38.21 	89% 	0   
517.13 	423.81 	39.54 	89% 	0   
515.53 	423.47 	39.84 	89% 	0   
515.71 	425.09 	39.92 	90% 	0   
517.05 	424.18 	40.58 	89% 	0   
512.69 	422.49 	38.86 	89% 	0   
513.63 	421.75 	38.23 	89% 	0   
519.13 	425.06 	40.91 	89% 	0   
513.84 	422.74 	38.35 	89% 	0   
512.44 	422.31 	37.63 	89% 	0   
515.16 	422.79 	37.69 	89% 	0   
515.83 	425.31 	38.36 	89% 	0   
513.07 	423.68 	36.54 	89% 	0   
517.52 	423.71 	40.18 	89% 	0   
520.98 	425.91 	41.26 	89% 	0   
518.05 	424.64 	40.97 	89% 	0   
513.33 	421.89 	38.38 	89% 	0   
517.66 	425.46 	39.19 	89% 	0   
515.97 	424.26 	39.97 	89% 	0   
515.93 	424.27 	39.13 	89% 	0   
514.48 	423.28 	37.99 	89% 	0   
517.87 	423.30 	41.08 	89% 	0   
512.68 	422.16 	37.68 	89% 	0   
516.92 	425.49 	38.15 	89% 	0   
510.48 	422.08 	38.07 	90% 	0   
515.99 	424.04 	38.99 	89% 	0   
518.15 	424.71 	40.14 	89% 	0   
516.18 	424.76 	39.83 	90% 	0   
516.25 	424.68 	39.17 	89% 	0   
515.98 	424.20 	40.11 	89% 	0   
516.42 	424.24 	39.62 	89% 	0   
512.63 	422.23 	38.20 	89% 	0   
514.22 	423.93 	37.23 	89% 	0   
519.49 	424.01 	40.87 	89% 	0   
519.74 	425.13 	41.44 	89% 	0   
514.30 	425.26 	37.90 	90% 	0   

[-- Attachment #6: 4.8.0_original --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
518.51 	425.28 	40.14 	89% 	0   
515.43 	422.87 	38.50 	89% 	0   
518.51 	425.20 	40.07 	89% 	0   
517.30 	424.85 	39.32 	89% 	0   
520.33 	425.38 	41.00 	89% 	0   
516.33 	423.60 	40.57 	89% 	0   
517.24 	425.26 	40.76 	90% 	0   
518.57 	424.18 	40.77 	89% 	0   
515.05 	424.63 	38.42 	89% 	0   
516.41 	425.11 	38.11 	89% 	0   
520.57 	426.82 	41.20 	89% 	0   
513.98 	422.66 	38.12 	89% 	0   
516.91 	423.95 	38.86 	89% 	0   
517.65 	425.12 	38.86 	89% 	0   
517.07 	424.97 	38.91 	89% 	0   
517.57 	424.48 	40.54 	89% 	0   
516.59 	424.33 	40.24 	89% 	0   
517.77 	423.86 	40.14 	89% 	0   
518.75 	425.02 	40.83 	89% 	0   
516.77 	424.98 	39.37 	89% 	0   
518.82 	423.74 	41.19 	89% 	0   
516.36 	423.56 	39.64 	89% 	0   
516.99 	424.61 	39.73 	89% 	0   
514.07 	423.46 	37.95 	89% 	0   
519.41 	424.36 	41.48 	89% 	0   
516.22 	424.79 	40.12 	90% 	0   
519.10 	425.23 	40.83 	89% 	0   
517.71 	424.48 	40.32 	89% 	0   
514.13 	424.36 	37.57 	89% 	0   
515.27 	422.32 	38.00 	89% 	0   
515.71 	424.49 	38.32 	89% 	0   
519.60 	425.82 	40.45 	89% 	0   
517.14 	425.22 	38.93 	89% 	0   
519.33 	425.48 	41.27 	89% 	0   
515.05 	423.13 	38.62 	89% 	0   
514.74 	421.72 	39.25 	89% 	0   
515.16 	424.79 	38.28 	89% 	0   
520.03 	426.43 	39.07 	89% 	0   
517.19 	424.75 	41.20 	90% 	0   
514.60 	423.47 	37.03 	89% 	0   
514.01 	423.48 	38.40 	89% 	0   
517.28 	424.55 	39.74 	89% 	0   
516.94 	424.21 	39.68 	89% 	0   
518.06 	424.66 	40.79 	89% 	0   
512.30 	422.61 	38.52 	90% 	0   
518.89 	424.64 	40.79 	89% 	0   
520.16 	426.90 	40.02 	89% 	0   
516.53 	423.67 	39.40 	89% 	0   
519.34 	426.40 	39.60 	89% 	0   
514.95 	423.45 	38.58 	89% 	0   
514.91 	424.10 	39.76 	90% 	0   
518.29 	425.03 	40.57 	89% 	0   
516.67 	423.76 	41.71 	90% 	0   
512.09 	423.93 	36.86 	89% 	0   
516.42 	426.86 	39.30 	90% 	0   
511.86 	421.62 	38.49 	89% 	0   
518.10 	425.34 	40.62 	89% 	0   
517.97 	423.84 	39.32 	89% 	0   
519.58 	424.94 	39.18 	89% 	0   
513.47 	424.40 	36.78 	89% 	0   
518.82 	426.36 	41.58 	90% 	0   
519.86 	426.48 	42.21 	90% 	0   
515.02 	425.75 	37.97 	90% 	0   
514.94 	423.48 	38.87 	89% 	0   
517.55 	423.70 	40.12 	89% 	0   
517.97 	425.08 	39.92 	89% 	0   
516.53 	425.37 	40.12 	90% 	0   
516.91 	423.78 	39.70 	89% 	0   
519.47 	425.41 	41.54 	89% 	0   
518.61 	423.41 	40.06 	89% 	0   
514.55 	423.75 	38.36 	89% 	0   
517.26 	424.62 	39.67 	89% 	0   
519.68 	425.46 	41.24 	89% 	0   
519.43 	426.62 	39.99 	89% 	0   
520.60 	426.29 	39.27 	89% 	0   
516.22 	425.59 	38.76 	89% 	0   
518.48 	425.60 	40.14 	89% 	0   
515.32 	422.75 	38.44 	89% 	0   
518.59 	424.40 	40.70 	89% 	0   
517.42 	424.37 	40.08 	89% 	0   
518.86 	424.91 	41.36 	89% 	0   
517.18 	426.24 	40.35 	90% 	0   
517.24 	424.86 	39.18 	89% 	0   
518.21 	424.45 	41.33 	89% 	0   
513.85 	423.21 	37.88 	89% 	0   
517.24 	424.80 	40.09 	89% 	0   
511.85 	422.90 	37.98 	90% 	0   
516.80 	424.09 	40.37 	89% 	0   
516.25 	424.32 	39.10 	89% 	0   
516.21 	424.08 	40.07 	89% 	0   
515.07 	424.65 	38.45 	89% 	0   
514.59 	423.28 	38.92 	89% 	0   
517.48 	423.99 	38.05 	89% 	0   
515.78 	423.78 	41.06 	90% 	0   
516.27 	424.82 	40.48 	90% 	0   
520.68 	425.09 	41.77 	89% 	0   
515.41 	424.78 	38.68 	89% 	0   
519.40 	425.27 	39.88 	89% 	0   
514.53 	423.98 	38.22 	89% 	0   
516.19 	424.88 	38.48 	89% 	0   

[-- Attachment #7: 4.8.0_modified --]
[-- Type: application/octet-stream, Size: 3744 bytes --]

1 - Elapsed real (wall clock) time used by the process, in seconds 
2 - Total number of CPU-seconds that the process used directly (in user mode), in seconds
3 - Total number of CPU-#seconds used by the system on behalf of the process (in kernel mode), in seconds
4 - Percentage of the CPU that this job got. This is just user +system times divied by the total running time
5 - Average resident set size of the process, in Kilobytes

1	2	3	4	5
514.61 	422.84 	39.44 	89% 	0   
516.69 	423.03 	41.05 	89% 	0   
516.17 	421.91 	40.20 	89% 	0   
517.09 	423.90 	40.46 	89% 	0   
518.19 	423.60 	41.05 	89% 	0   
514.85 	421.73 	41.05 	89% 	0   
515.79 	423.86 	38.83 	89% 	0   
515.33 	423.58 	39.45 	89% 	0   
515.91 	422.30 	39.92 	89% 	0   
513.92 	420.96 	39.78 	89% 	0   
514.84 	421.96 	40.22 	89% 	0   
514.92 	422.73 	39.35 	89% 	0   
513.99 	422.49 	39.36 	89% 	0   
513.25 	422.94 	40.04 	90% 	0   
514.62 	423.16 	39.48 	89% 	0   
515.41 	422.88 	39.80 	89% 	0   
516.48 	422.62 	39.66 	89% 	0   
516.95 	422.79 	40.63 	89% 	0   
516.53 	424.12 	39.60 	89% 	0   
511.43 	421.38 	38.24 	89% 	0   
515.46 	423.57 	38.78 	89% 	0   
518.45 	423.47 	40.56 	89% 	0   
518.59 	424.14 	42.15 	89% 	0   
517.94 	422.42 	41.04 	89% 	0   
514.00 	421.72 	39.25 	89% 	0   
515.90 	423.40 	40.00 	89% 	0   
515.31 	422.90 	40.16 	89% 	0   
516.04 	423.14 	40.41 	89% 	0   
519.69 	423.65 	41.93 	89% 	0   
515.38 	422.56 	38.45 	89% 	0   
516.51 	423.53 	39.56 	89% 	0   
518.34 	423.88 	40.94 	89% 	0   
516.93 	422.64 	40.89 	89% 	0   
515.98 	422.62 	40.53 	89% 	0   
516.47 	424.58 	38.92 	89% 	0   
517.12 	422.82 	40.25 	89% 	0   
517.35 	423.67 	40.95 	89% 	0   
517.00 	421.86 	40.54 	89% 	0   
513.68 	422.54 	39.21 	89% 	0   
515.06 	423.96 	39.58 	89% 	0   
517.01 	423.24 	41.38 	89% 	0   
516.43 	421.86 	41.09 	89% 	0   
514.66 	421.38 	39.86 	89% 	0   
515.44 	422.56 	39.87 	89% 	0   
517.23 	421.99 	41.95 	89% 	0   
516.63 	423.29 	40.13 	89% 	0   
515.09 	422.02 	40.62 	89% 	0   
515.61 	423.20 	38.76 	89% 	0   
514.02 	421.90 	39.67 	89% 	0   
520.91 	424.02 	39.68 	89% 	0   
517.22 	423.47 	40.77 	89% 	0   
517.14 	422.90 	39.88 	89% 	0   
515.61 	423.20 	39.51 	89% 	0   
520.16 	422.74 	40.76 	89% 	0   
515.76 	423.28 	40.71 	89% 	0   
516.55 	423.00 	41.14 	89% 	0   
516.74 	423.27 	40.64 	89% 	0   
516.39 	423.00 	40.50 	89% 	0   
515.24 	421.97 	40.57 	89% 	0   
519.17 	423.66 	40.29 	89% 	0   
515.57 	422.68 	39.20 	89% 	0   
515.98 	423.02 	40.78 	89% 	0   
515.63 	423.88 	39.76 	89% 	0   
517.80 	422.63 	40.83 	89% 	0   
515.01 	422.30 	39.72 	89% 	0   
511.97 	423.54 	36.70 	89% 	0   
517.74 	423.16 	39.30 	89% 	0   
517.64 	423.00 	42.12 	89% 	0   
513.34 	421.94 	39.54 	89% 	0   
517.06 	422.42 	40.64 	89% 	0   
516.80 	422.43 	40.52 	89% 	0   
514.42 	422.29 	40.75 	90% 	0   
515.41 	423.02 	40.24 	89% 	0   
515.17 	422.63 	40.08 	89% 	0   
520.22 	424.86 	41.87 	89% 	0   
514.19 	423.09 	40.19 	90% 	0   
517.27 	422.99 	39.60 	89% 	0   
514.41 	423.52 	38.54 	89% 	0   
520.11 	425.00 	42.03 	89% 	0   
514.98 	421.52 	40.26 	89% 	0   
514.70 	423.58 	40.37 	90% 	0   
517.01 	423.52 	40.61 	89% 	0   
517.75 	423.68 	40.42 	89% 	0   
514.84 	422.98 	39.03 	89% 	0   
513.96 	422.30 	40.28 	90% 	0   
516.50 	422.86 	41.42 	89% 	0   
517.78 	423.66 	40.72 	89% 	0   
518.40 	423.09 	40.39 	89% 	0   
519.39 	423.43 	41.17 	89% 	0   
518.82 	424.25 	40.19 	89% 	0   
516.68 	424.24 	40.55 	89% 	0   
518.05 	423.22 	41.28 	89% 	0   
514.86 	422.76 	37.66 	89% 	0   
511.34 	422.41 	37.16 	89% 	0   
513.23 	422.72 	38.14 	89% 	0   
516.06 	421.88 	39.79 	89% 	0   
517.53 	423.54 	38.99 	89% 	0   
517.82 	423.74 	41.65 	89% 	0   
516.76 	422.72 	40.10 	89% 	0   
514.34 	423.31 	38.72 	89% 	0   

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-02-03  9:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-20 13:17 changing a collision resolution strategy of the symbol table of identifiers Roman Gareev
2013-10-20 13:22 ` Ondřej Bílka
2013-11-04 18:41   ` Roman Gareev
2013-10-31 12:39 ` Florian Weimer
2013-11-04 19:23   ` Roman Gareev
2014-02-03  9:32     ` Roman Gareev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).