If disk i/o is not making split "too slow" then try awk. But you should consider that a big I/O request queue length on that filesystem is a likely candidate for slow splitting, rather than split being a bad performer.
awk version of split:
Code:
awk ' {
if(NR<300000) { print $0 > "smallfile1"}
if (NR>300000 && NR < 600000) { print $0 > "smallfile2" }
if (NR>60000) {print $0 > "smallfile3" }
}' bigfile