The interface would be something like nn.TimedModule(module, print_interval, name), and after print_interval calls to the module, it would print name and the average time for a forwards and backwards pass. If this seems useful, I'm happy to implement it here, or if there are other ways of timing specific modules / technical issues I'm overlooking, that'd be useful too.