string의 경우 일반 클래스만큼의 속도차이는 없었음
그래도 레퍼런스가 조금 더 빠름
그리고 같은 작업했을때 string이 CString보다 훨씬 빠름 헤헤
-----------------------MFC-------------------
void func3(CString s){
s+=_T("k");
s=_T("");
}
void func4(CString& s){
s+=_T("k");
s=_T("");
}
void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
CDC* pDC=GetDC();
CString tmp=_T("");
time_t start3=time(NULL);
CString s3;
for(int i=0;i<99999999;i++){
func3(s3);
}
time_t end3=time(NULL);
tmp.Format(_T("value 시간 : %I64d초"),end3-start3);
pDC->TextOut(10,10,tmp);
time_t start4=time(NULL);
CString s4;
for(int i=0;i<99999999;i++){
func4(s4);
}
time_t end4=time(NULL);
tmp.Format(_T("Reference 시간 : %I64d초"),end4-start4);
pDC->TextOut(10,100,tmp);
ReleaseDC(pDC);
CWnd::OnLButtonDown(nFlags, point);
}
--------------------C+------------------------
#include <iostream>
#include <time.h>
using namespace std;
void func3(string s){
s+="k";
s="";
}
void func4(string& s){
s+="k";
s="";
}
int main()
{
time_t start3=time(NULL);
string s3;
for(int i=0;i<99999999;i++){
func3(s3);
}
time_t end3=time(NULL);
cout<<"Value 시간 : "<<end3-start3<<"초"<<endl;
time_t start4=time(NULL);
string s4;
for(int i=0;i<99999999;i++){
func4(s4);
}
time_t end4=time(NULL);
cout<<"Reference 시간 : "<<end4-start4<<"초"<<endl;
}
- _-) CString도 CArray하고 같아서 선형으로 성장하기 때문에 느려....
그리고 두가지 함수가 서로 전혀 다른 작업을 하는건데 의미가 있냐. 그리고 속도차이 때문에 레퍼런스를 쓰기도 하지만, 그건 보통 자료를 묶는 스트럭쳐나 그렇게 쓰지, 대부분의 경우 레퍼런스 자체가 필요한 경우라고
하지만 병행성을 끼얹으면 어떨까?