动态链接库里的函数为什么这么慢

动态链接库里的函数为何这么慢?
听说c++的效率很高的,可是我的函数为何速度很慢,是我的代码写的不行吗?
请高手检查修改!!!


#include<string>
#include<vector>
#include<sstream>
using namespace std;

string WX(string b1,string b2) {                            
     if((b1+b2=="金水")||(b1+b2=="木火")||(b1+b2=="水木")||(b1+b2=="火土")||(b1+b2=="土金"))
          return "SY";
else if((b1+b2=="金土")||(b1+b2=="木水")||(b1+b2=="水金")||(b1+b2=="火木")||(b1+b2=="土火"))
          return "SZ";  
else if((b1+b2=="金木")||(b1+b2=="木土")||(b1+b2=="水火")||(b1+b2=="火金")||(b1+b2=="土水"))
      return "KY";
else if((b1+b2=="金火")||(b1+b2=="木金")||(b1+b2=="水土")||(b1+b2=="火水")||(b1+b2=="土木"))
          return "KZ";
else if((b1+b2=="金金")||(b1+b2=="木木")||(b1+b2=="水水")||(b1+b2=="火火")||(b1+b2=="土土"))
          return "TT";
else      
          return "";
}

string FH1(vector<string> c1,vector<string>c2,vector<string>f4){        
 string n,o;
 int z=0;
 vector<string>::reverse_iterator p1=c1.rbegin();
 vector<string>::reverse_iterator p2=c2.rbegin();
 do

 n=(WX(*(p1+1),*p2))[0];                                
 o=(WX(*(p1+2),*(p2+1)))[0];                                 
     z++; 
    p1++; 
    p2++; 
} while((n==o)&&(n!="T")&&(o!="T"));    
vector<string>::iterator k=f4.begin();
 ostringstream oss;
  oss<<z;
  string q=oss.str(),f2;
  f2=(WX(*(p1+1),*p2))[0];
if(z<15)
  return "";

else  if(f2=="S"){
        if(*p1=="金")
               return q+*(k+0);
        if(*p1=="木")
       return q+*(k+1);         
        if(*p1=="水")
       return q+*(k+2);
        if(*p1=="火")
       return q+*(k+3);
        if(*p1=="土")
       return q+*(k+4);
 }
else  if(f2=="K"){
          if(*p1=="金")
                      return q+*(k+5);
          if(*p1=="木")
      return q+*(k+6);