One of many C4D default settings that can be optimised. The default Spline 'Intermediate Points' is set to Adaptive and 5°. For most situations, especially Sweeps and Spline Dynamics, I prefer to use a low Uniform subdivision to get a cleaner and more sensible resolution when using Sweep or Extrude Nurbs.
For Sweep Nurbs most people use a Circle Spline. This is fine if you take the above precautions to reduce the resolution, but I actually prefer to just use an N-Sided Spline for maximum efficiency. Simply choose the amount of sides to control the subdivision of the Sweep. I find Filet Cap subdivision for all Nurbs can usually be reduced from the default 5.
NOTE: In versions older than R15 Subdivision Surfaces were called HyperNURBS. I'm sure the terminology will take a while to fully migrate in conversation.
The default of 2 viewport subdivisions and 3 render subdivisions is usually too high, especially in the viewport. Depending on the distance from the camera I would recommend experimenting with lower subdivisions for rendering, but in the viewport once you have determined the look of your smoothed mesh you can knock that down to 1 or even 0 for most objects so you don't have to worry about disabling them via other methods.
I also try to limit the amount of Subdivision Surface objects in a scene. If you have a group of objects that need smoothing put them in a Null and put that in a Subdivision Surface, you can use the Stop Tag to stop Generators (and Deformers) from affecting specific objects within a hierarchy if you want to smooth some objects in a group but not others. Definitely avoid putting Subdivision Surfaces in other Subdivision Surfaces!
I assume most people already use instances regularly, whether it's the Instance Object or via Mograph. Everyone also probably knows when they can and can’t turn on ‘Render Instances': for example if the Instance needs to be treated as geometry and deformed in any way then you’re out of luck. Regular Instances offer no real speed increase in the viewport over real copies, but they keep things a lot more controllable.
One behaviour I recently noticed while using Instances of a proxy setup is that if a high poly object is within an Instanced group it will be calculated regardless of its visibility and bog down your scene. Especially when the Instance is animated. One quick solution for this is to temporarily remove the high poly version from your proxy setup while you animate, then put it back within the hierarchy for rendering. This is admittedly not a fantastic workflow, but it gets the job done.
Like Splines, the default subdivisions for Primitives are unnecessarily high when created. For example a Cylinder has 36 subdivisions, if this cylinder is being used as one of a hundred tiny rivets in a Cloner object for example then these defaults are insane. Obviously use your judgement here: take into account if the object is large or small, if it's being subdivided or not.
The same goes for the filet subdivisions on a cube, and subdivisions of a sphere (especially if using Render Perfect). Just be aware of these default settings and lower them when you can.
If I’m honest C4D’s symmetry is currently pretty awful, especially in terms of options when collapsing it. I'm consciously avoiding writing about many plugins or scripts because I plan to write another article about general workflow tips, but for modelling situations I would seriously suggest using the free True Symmetry plugin or Cactus Dan’s fully featured Symmetry Tools.
For simply duplicating a group of objects across an axis I use the Instance object with -1 scale in the axis you want to mirror, this stops all your objects being merged when collapsing and also offers the option to use Render Instances which speed up your scene greatly.
If you do need to use the Symmetry object then turning off the 'Weld Points' attribute temporarily (or permanently if you don't have any seams to eliminate along the centre) will calculate a lot faster. This tip also applies to the Connect object.
This is a scene-wide function that can help in some situations. It will reduce Hypernurbs subdivisions, reduce the number of Clones and generally simplify your scene to help speed up the viewport. The problem is there is not much control, but very useful for quickly making your scene faster with one click if it's comprised mainly of Generators.
Right next to that drop-down is 'Filter' which is a long list of global options to switch on and off. Generators and Hypernurbs are separated here, along with Particles, Deformers, Splines (which actually also refers to Cloners... I'm not sure why) and many more.
Most people are probably familiar with this tag, but it's worth mentioning that it also includes a more controllable Level of Detail parameter. Rather than the scene-wide LOD, this has a percentage slider and can obviously be assigned to more specific areas of your scene. I often use it when cloning huge amounts of object onto a surface and using it is a 'Viewport Density' type parameter.
A great tip I was recently given is to use a Generator as the top-level parent of a hierarchy. We are used to using Null objects as Parents, but there is an option missing in the object manager... Enable. By using a Spline (a Generator that will not affect the children in any way) there is now a way to Enable/Disable every Generator and Deformer in that hierarchy by Cmd+clicking on its Enable icon (check/cross).
I recommend choosing a rarely used parametric Spline, in my case 4-sided, and setting the default size to 0 to avoid cluttering the Viewport. Dock this specific spline in your layout and use it as a Null when you need that control.
Quick Tip: Holding Alt when creating any object (for example a Null, or a Spline!) will automatically make it a Parent of your currently selected object with the same coordinates. Holding Shift will make it a Child.