There's a great two part article on CodeProject about faster serialization (primarily for use in remoting) in .NET.
Part I details the code used in this technique.
Part II is sort of a HOWTO for the code introduced in Part I.
Some test results:
Northwind - tables only
A DataSet containing all 13 tables from Northwind.
Method | Size (bytes) | >Time Taken (seconds) |
Vanilla .NET serialization | 1,431,297 | 0.560 |
Fast Serialization | 383,001 | 0.031 |
| 73.2% smaller | 18.1x times faster |
Northwind - both tables and views
A DataSet containing all 13 tables and 16 views from Northwind.
Method | Size (bytes) | Time Taken (seconds) |
Vanilla .NET serialization | 5,635,208 | 2.624 |
Fast Serialization | 688,910 | 0.126 |
| 87.8% smaller | 20.8x times faster |
Obviously, if you're doing remoting, this code or something like it should be in your toolbox