How to use speedtest -------------------- Run it like this: perl -d:DProf speedtest That will run SA over the individual messages listed as arguments, and produce a timings output file called tmon.out, which can be read by dprofpp So you'll then want to do something like: dprofpp Which will dump something like: Total Elapsed Time = 3.318045 Seconds User+System Time = 2.408151 Seconds Exclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 22.0 0.530 1.228 8 0.0662 0.1535 Mail::SpamAssassin::PerMsgStatus::_body_tests 6.64 0.160 0.160 8 0.0200 0.0200 Mail::SpamAssassin::PerMsgStatus::porn_word_test 5.81 0.140 1.377 8 0.0175 0.1722 Mail::SpamAssassin::PerMsgStatus::do_body_tests 5.77 0.139 1.703 21 0.0066 0.0811 Mail::SpamAssassin::PerMsgStatus::BEGIN 5.56 0.134 0.178 1 0.1338 0.1775 Mail::SpamAssassin::Conf::_parse 5.40 0.130 0.116 970 0.0001 0.0001 Mail::SpamAssassin::NoMailAudit::_get_header_list 5.40 0.130 0.758 13 0.0100 0.0583 Mail::SpamAssassin::BEGIN 5.36 0.129 0.302 924 0.0001 0.0003 Mail::SpamAssassin::PerMsgStatus::get 4.15 0.100 0.189 970 0.0001 0.0002 Mail::SpamAssassin::NoMailAudit::get_header 3.28 0.079 0.204 14 0.0057 0.0146 Razor::Client::BEGIN 3.11 0.075 0.184 8 0.0094 0.0230 Mail::SpamAssassin::PerMsgStatus::_rawbody_tests 2.91 0.070 0.085 8 0.0087 0.0107 Mail::SpamAssassin::PerMsgStatus::do_body_uri_tests 2.49 0.060 0.079 8 0.0075 0.0099 Mail::SpamAssassin::PerMsgStatus::RATWARE_head_test 2.49 0.060 0.067 8 0.0075 0.0084 Mail::SpamAssassin::PerMsgStatus::get_decoded_stripped_body_text_array 2.49 0.060 0.085 30 0.0020 0.0028 Net::DNS::RR::BEGIN The functions in the final column which you care about are the ones that match /_test$/ You can increase the number of functions listed using the "-O xxxx" option to dprofpp.