diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb
index <HASH>..<HASH> 100644
--- a/lib/puppet/parser/compiler.rb
+++ b/lib/puppet/parser/compiler.rb
@@ -307,7 +307,7 @@ class Puppet::Parser::Compiler
   def fail_on_unevaluated_overrides
     remaining = []
     @resource_overrides.each do |name, overrides|
-      remaining += overrides
+      remaining.concat overrides
     end
 
     unless remaining.empty?
diff --git a/lib/puppet/transaction/event_manager.rb b/lib/puppet/transaction/event_manager.rb
index <HASH>..<HASH> 100644
--- a/lib/puppet/transaction/event_manager.rb
+++ b/lib/puppet/transaction/event_manager.rb
@@ -77,7 +77,7 @@ class Puppet::Transaction::EventManager
 
     @event_queues[target] ||= {}
     @event_queues[target][callback] ||= []
-    @event_queues[target][callback] += events
+    @event_queues[target][callback].concat(events)
   end
 
   def queued_events(resource)
(#<I>) Use Array#concat rather than +=

+= reassigns the variable it's used on, which means it creates a new
copy of the array each time, which is slow and wasteful. Array#concat,
on the other hand, modifies the object to which the variable refers,
requiring no copy and leaving no orphaned array, and so is much, much
faster.