I original used a commercial product that took hours to process a few hundred line segment (no arcs were allowed). With my application I was able to process the largest TIGER street centerline file of 250,000 segments in an hour and a half. The complete program added fillets and street names.
The source code to the centerline expansion logic. The original logic was over thirty thousand lines. I was able to reduce this to about 100 lines, the other lines in this application are for input, output and common line-line, line-arc and arc-arc intersection logic.