Index: simplenews.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simplenews/simplenews.admin.inc,v
retrieving revision 1.41
diff -u -p -r1.41 simplenews.admin.inc
--- simplenews.admin.inc	7 Dec 2008 17:27:36 -0000	1.41
+++ simplenews.admin.inc	7 Dec 2008 19:04:15 -0000
@@ -900,7 +900,8 @@ function simplenews_admin_settings_mail(
     '#title' => t('Cron throttle'),
     '#options' => $throttle,
     '#default_value' => variable_get('simplenews_throttle', 20),
-    '#description' => t('Sets the numbers of newsletters sent per cron run. Failure to send will also be counted.'),
+    '#description' => t('Sets the numbers of newsletters sent per cron run. Failure to send will also be counted.') .'<br />'.
+      t('Cron execution must not exceed the PHP maximum exection time of %max seconds. You find the time spend to send emails in the <a href="/admin/reports/dblog">Recent log entries</a>.', array('%max' => ini_get('max_execution_time'))),
   );
   $form['simplenews_mail_backend']['simplenews_spool_expire'] = array(
     '#type' => 'select',
Index: simplenews.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simplenews/simplenews.module,v
retrieving revision 1.168
diff -u -p -r1.168 simplenews.module
--- simplenews.module	7 Dec 2008 17:27:36 -0000	1.168
+++ simplenews.module	7 Dec 2008 19:04:19 -0000
@@ -1676,6 +1676,7 @@ function simplenews_mail_send($nid = NUL
   $limit = isset($limit) ? $limit : variable_get('simplenews_throttle', 20);
   if ($messages = simplenews_mail_spool_get(SIMPLENEWS_SPOOL_PENDING, $nid, $vid, $limit)) {
     $mail_sent = array();
+    _simplenews_measure_usec(TRUE);
 
     foreach ($messages as $key => $message) {
       // Get subscription data for recipient and language
@@ -1735,6 +1736,9 @@ function simplenews_mail_send($nid = NUL
       simplenews_mail_spool_update($mail_sent, SIMPLENEWS_SPOOL_SEND);
     }
     simplenews_send_status_update();
+
+    // Report sent result and elapsed time
+    watchdog('simplenews', '%count emails sent successfully in %sec seconds.', array('%count' => count($mail_sent), '%sec' => round(_simplenews_measure_usec(), 1)));
   }
 }
 
@@ -2218,6 +2222,22 @@ function _simplenews_subscription_confir
 }
 
 /**
+ * Helper function to measure elapsed time in microseconds.
+ *
+ * @param bool $start TRUE reset the time and start counting.
+ * @return float: elapsed time since start.
+ */
+function _simplenews_measure_usec($start = FALSE) {
+  static $start_time;
+  
+  if ($start) {
+    $start_time = microtime(TRUE);
+    return 0;
+  }
+  return microtime(TRUE) - $start_time;
+}
+
+/**
  * Implementation of hook_theme.
  */
 function simplenews_theme() {
