Index: realname.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/realname/realname.module,v
retrieving revision 1.4.4.36
diff -u -r1.4.4.36 realname.module
--- realname.module	27 Feb 2009 23:09:11 -0000	1.4.4.36
+++ realname.module	3 Mar 2009 18:14:22 -0000
@@ -262,10 +249,10 @@
       // Save the username that is already there.
       $node->realname_save = $node->name;
       if (!isset($accounts[$node->uid])) {
-        $accounts[$node->uid] = user_load(array('uid' => $node->uid));
+        $accounts[$node->uid] = realname_get_user($node->uid);
       }
       $account = $accounts[$node->uid];
-      $node->realname = $node->name = realname_make_name($account);
+      $node->realname = $node->name = $account->name;
       $node->homepage = isset($account->homepage) ? $account->homepage : NULL;
       break;
 
@@ -283,11 +270,17 @@
  * Implementation of hook_comment().
  */
 function realname_comment(&$comment, $op) {
+  static $users = array();
   switch ($op) {
     case 'view':
       if (!$comment->homepage) {
-        $account = user_load(array('uid' => $comment->uid));
-        realname_make_name($account);
+        if (isset($users[$comment->uid])) {
+          $account = $users[$comment->uid];
+        }
+        else {
+          $users[$comment->uid] = $account = realname_get_user($comment->uid);
+        }
+        
         $comment->homepage = isset($account->homepage) ? $account->homepage : NULL;
       }
       break;
@@ -325,7 +318,7 @@
     if ($form_id == $bypass['name']) {
       $field_name = '$form[\''. implode("']['", $bypass['fields']) ."']['#default_value']";
       if (!isset($user->realname)) {
-        $user = user_load(array('uid' => $user->uid));
+        $user->realname = realname_make_name($user);
       }
       $value = $user->uid ? $user->realname_save : variable_get('anonymous', 'Anonymous');
       eval($field_name .' = $value;');      
@@ -341,14 +334,14 @@
 
     case 'contact_mail_user':
       if (!isset($user->realname)) {
-        $user = user_load(array('uid' => $user->uid));
+        $user->realname = realname_make_name($user);
       }
       $form['from']['#value'] = check_plain($user->realname) .' &lt;'. check_plain($user->mail) .'&gt;';
       break;
 
     case 'contact_mail_page':
       if (!isset($user->realname)) {
-        $user = user_load(array('uid' => $user->uid));
+        $user->realname = realname_make_name($user);
       }
       $form['name']['#default_value'] = $user->uid ? $user->realname : '';
       break;
@@ -444,7 +442,7 @@
     }
 
     if ($homepage && $account->$homepage) {
-        $links[$account->uid] = $account->homepage = $account->$homepage;
+      $links[$account->uid] = $account->$homepage;
     }
 
     $string = trim(strtr($pattern, $stuff));
@@ -481,7 +479,18 @@
 }
 
 /**
+ * Helper to replace user_load() and be much faster.
+ */
+function realname_get_user($uid) {
+  $result = db_query("SELECT uid, name, mail FROM {users} WHERE uid=%d", $uid);
+  $account = db_fetch_object($result);
+  $account->name = realname_make_name($account);
+  return $account;
+}
+
+/**
  * Displays the admin settings form.
+ * @TODO: move this admin stuff to separate file.
  */
 function realname_admin_settings() {
   return drupal_get_form('realname_admin_fields');

