I use an industrial ultrasonic cleaner. Since LEGO recommends temperatures under 104 F/40 C you are very limited on the heat benefits of cleaning. I elect to clean longer at lower temperatures to offset this. Usually go 18 minutes at around 38-40 C. After that, as others have said, use a salad spinner to remove excess water (this also helps eliminate water spots when they dry). good news is you can get a super cheap all plastic spinner, as Lego won't stress it (mine is a five dollar Walmart model that I have been using for over 5 years now).
After that I use tray based food dehydrators and lay the pieces out on the trays. Make sure you get a model that can adjust temperatures to below 100 F. Mine defaults to 158 F and I set it to the lowest temp it can go at 95 F. Make sure the pieces are not touching as water tension can seal bricks to each other and lock in moisture. Again I go with more time to offset lower temperatures. Usually let a full load go overnight.
Final step is to bag the LEGO in gallon ziplocks with a couple silicon desiccant packs (come in big packs super cheap on Amazon). I Leave them bagged for about a week to ensure all moisture in deep crevices is gone before sorting/allocating them.
I realize this might be overkill to most but it is the best, safest and most thorough way to clean pieces. I have been refining the process for around 6 years or so. Also this is very scalable to bulk operations. Eventually I want 2 cleaners and 5 dehydrators for a full time operation. Biggest thing to observe is that hard limit of 104 F on bricks.