Avoiding unnecessary allocations
You should eliminate unnecessary allocations, especially when the size of an event is very large. For example:
event LargeEventWith1000Fields {}     // field definitions omitted 
 
integer i := 0; 
while (i < 1000) {   
   route LargeEvent(0,0,i, ...);      // bad   
   i := i + 1; 
}
 
LargeEvent le := new LargeEvent();    // good 
while (i < 1000) {   
   le.foo := i;   
   route le;   
   i := i + 1; 
}