H_G_G_I
یک شنبه 19 آذر 1391, 14:09 عصر
سلام
من یه کلاس استرینگ مخصوص خودم نوشتم :لبخند: به این صورت که می بینید ::
//String With limit Character
class Strlim
{
public:
char m_chars[32];
inline Strlim& operator = (const char* _cstr);
inline bool compare1(const Strlim& _other);
inline bool compare2(const Strlim& _other);
};
Strlim& Strlim::operator=( const char* _cstr )
{
size_t l_len = strlen(_cstr);
if(l_len >= 32)
{
memcpy(m_chars, _cstr, 31);
m_chars[31] = '\0';
}
else
{
memcpy(m_chars, _cstr, l_len);
memset(m_chars + l_len, 0, 32-l_len);
}
return *this;
}
//char comparing
bool Strlim::compare1( const Strlim& _other )
{
for(int i = 0; i < 32; i++)
{
if(m_chars[i] != _other.m_chars[i])
return false;
}
return true;
}
//int comparing
bool Strlim::compare2( const Strlim& _other )
{
int* l_int1 = (int*)m_chars;
int* l_int2 = (int*)_other.m_chars;
for(int i = 0; i < 8; i++)
{
if(*l_int1 != *l_int2)
return false;
l_int1++;
l_int2++;
}
return true;
}
حالا می خوام بدونم کدوم تابع سریع تره compare1 یا compare 2 ؟ :متفکر:
تو حالت دیباگ که میارم اصلا دوتاشون از strcmp هم کند ترن !
تو release همه تو سه سوت کار می کنن اصلا نمی شه فاصله زمانی رو فهمید !:قهقهه:
من در مورد memcpy که می خوندم فهمیدم که اگه مثلا یه ارایه رو 32 بیت 32 بیت کپی کنیم (int) سریع تر از بایت بایت (char)کپی کردنه !
الان من هم می تونم این اریه m_chars رو بایت بایت مقایسه کنم و هم ...
خب حالا کدوم سریع تره !
خودم فکر می کنم compare2 بهتره . :متفکر:
من یه کلاس استرینگ مخصوص خودم نوشتم :لبخند: به این صورت که می بینید ::
//String With limit Character
class Strlim
{
public:
char m_chars[32];
inline Strlim& operator = (const char* _cstr);
inline bool compare1(const Strlim& _other);
inline bool compare2(const Strlim& _other);
};
Strlim& Strlim::operator=( const char* _cstr )
{
size_t l_len = strlen(_cstr);
if(l_len >= 32)
{
memcpy(m_chars, _cstr, 31);
m_chars[31] = '\0';
}
else
{
memcpy(m_chars, _cstr, l_len);
memset(m_chars + l_len, 0, 32-l_len);
}
return *this;
}
//char comparing
bool Strlim::compare1( const Strlim& _other )
{
for(int i = 0; i < 32; i++)
{
if(m_chars[i] != _other.m_chars[i])
return false;
}
return true;
}
//int comparing
bool Strlim::compare2( const Strlim& _other )
{
int* l_int1 = (int*)m_chars;
int* l_int2 = (int*)_other.m_chars;
for(int i = 0; i < 8; i++)
{
if(*l_int1 != *l_int2)
return false;
l_int1++;
l_int2++;
}
return true;
}
حالا می خوام بدونم کدوم تابع سریع تره compare1 یا compare 2 ؟ :متفکر:
تو حالت دیباگ که میارم اصلا دوتاشون از strcmp هم کند ترن !
تو release همه تو سه سوت کار می کنن اصلا نمی شه فاصله زمانی رو فهمید !:قهقهه:
من در مورد memcpy که می خوندم فهمیدم که اگه مثلا یه ارایه رو 32 بیت 32 بیت کپی کنیم (int) سریع تر از بایت بایت (char)کپی کردنه !
الان من هم می تونم این اریه m_chars رو بایت بایت مقایسه کنم و هم ...
خب حالا کدوم سریع تره !
خودم فکر می کنم compare2 بهتره . :متفکر: