Many perfectly well-engineered programs use deep copies to share data across threads. In network programming, deep copy becomes an even more common method to share data. Speed of a program will not be negatively affected by copies unless the most-constrained-resource is forced to wait for copying to take place. When optimizing a program, always analyze and often profile your program to make sure you know where the real bottlenecks are. That way you can be sure to optimize the right aspect of your program.