analyzer: presize m_cluster_map in store copy ctor
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 15 Mar 2022 21:55:14 +0000 (17:55 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 15 Mar 2022 21:55:14 +0000 (17:55 -0400)
Testing cc1 on pr93032-mztools-unsigned-char.c

Benchmark #1: (without patch)
  Time (mean ± σ):     338.8 ms ±  13.6 ms    [User: 323.2 ms, System: 14.2 ms]
  Range (min … max):   326.7 ms … 363.1 ms    10 runs

Benchmark #2: (with patch)
  Time (mean ± σ):     332.3 ms ±  12.8 ms    [User: 316.6 ms, System: 14.3 ms]
  Range (min … max):   322.5 ms … 357.4 ms    10 runs

Summary
  ./cc1.new ran 1.02 ± 0.06 times faster than ./cc1.old

gcc/analyzer/ChangeLog:
* store.cc (store::store): Presize m_cluster_map.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/store.cc

index 58df7aa..ec11433 100644 (file)
@@ -2032,7 +2032,8 @@ store::store ()
 /* store's copy ctor.  */
 
 store::store (const store &other)
-: m_called_unknown_fn (other.m_called_unknown_fn)
+: m_cluster_map (other.m_cluster_map.elements ()),
+  m_called_unknown_fn (other.m_called_unknown_fn)
 {
   for (cluster_map_t::iterator iter = other.m_cluster_map.begin ();
        iter != other.m_cluster_map.end ();