大家都說程式寫久、工程師幹久了,都會有自己的脾氣在...

 

下面這段 code 是某大學上課教材裡用到的一段 code。

 

int is_equ(double** m1, double** m2
           size_t row, size_t col)
{
    return !memcmp((void*)*m1, (void*)*m2, sizeof(double)*row*col);
}

 

我指正了,給了我的 code。

 

int is_equ(double** m1, double** m2, double eps,
           size_t row, size_t col)
{
    size_t i, j;
    for(i=0; i<row; ++i)
        for(j=0; j<col; ++j)
            if(fabs(m1[i][j]-m2[i][j])>eps) return 0;
    return 1;
}

 

上面這段 code 被打槍了,原因是「速度太慢、多此一舉」。

速度太慢可以接受,因我不敢妄下定論,不會有其他讓我感到驚艷的程式碼出現;

但「多此一舉」就... ,eps 是可以拿 FLT_MIN 或 DBL_MIN 當預設,

不過對方意思是連用都不要用.. 直接比記憶體內容就好。

 

其他的,就是沉默了。

edisonx 發表在 痞客邦 留言(2) 人氣()