diff --git a/src/xercesc/util/XMLString.hpp b/src/xercesc/util/XMLString.hpp
index 622afce1934fcd5ca6292db8fe24463865574686..c79162c53fd80e5d425558cc3e4cb8cfdff68f88 100644
--- a/src/xercesc/util/XMLString.hpp
+++ b/src/xercesc/util/XMLString.hpp
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
+ * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.15  2003/04/21 20:07:05  knoaman
+ * Performance: use memcpy in moveChars and replicate.
+ *
  * Revision 1.14  2003/02/25 16:42:31  tng
  * [Bug 7072] Documentation for XMLString::transcode states invalid return value.
  *
@@ -226,6 +229,7 @@
 #define XMLSTRING_HPP
 
 #include <xercesc/util/BaseRefVectorOf.hpp>
+#include <string.h>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -1453,14 +1457,11 @@ private :
 //  Inline some methods that are either just passthroughs to other string
 //  methods, or which are key for performance.
 // ---------------------------------------------------------------------------
-inline void XMLString::moveChars(       XMLCh* const    targetStr
-                                , const XMLCh* const    srcStr
-                                , const unsigned int    count)
+inline void XMLString::moveChars(       XMLCh* const targetStr
+                                , const XMLCh* const srcStr
+                                , const unsigned int count)
 {
-    XMLCh* outPtr = targetStr;
-    const XMLCh* inPtr = srcStr;
-    for (unsigned int index = 0; index < count; index++)
-        *outPtr++ = *inPtr++;
+    memcpy(targetStr, srcStr, count * sizeof(XMLCh));
 }
 
 inline unsigned int XMLString::stringLen(const XMLCh* const src)
@@ -1510,10 +1511,7 @@ inline XMLCh* XMLString::replicate(const XMLCh* const toRep)
     {
         const unsigned int len = stringLen(toRep);
         ret = new XMLCh[len + 1];
-        XMLCh* outPtr = ret;
-        const XMLCh* inPtr = toRep;
-        for (unsigned int index = 0; index <= len; index++)
-            *outPtr++ = *inPtr++;
+        memcpy(ret, toRep, (len + 1) * sizeof(XMLCh));
     }
     return ret;
 }