ceil(), round(), floor() 함수의 실행 속도 - 페이지 7

 
Andrey Kisselyov :

예를 들어 보겠습니다.
기계의 비트 수를 변경하고 64비트로 전환하고 기계의 정확도가 증가하더라도 기계의 정확도가 오류에서 설정한 것보다 훨씬 더 높기 때문에 공식이 작동을 멈춥니다.

감사합니다.

추신: 특정 수의 수에서 수식이 실패하는 다른 옵션이 있을 수 있습니다. 다른 기계로의 전환이나 사용자가 알지 못한 컴파일러의 변경으로 인해, 또는 기계에서 숫자 표현이 변경되었을 때, 또는 컴파일할 때 숫자의 소수 부분의 감소로 인해 지속적으로 오류를 선택합니다. 터미널의 새 버전 ... 그러나 무엇을 변경할 수 있는지 결코 알 수 없습니다. 그다지 좋지 않은 것 같습니다. IF를 만들거나 오류를 반복해서 작성하여 다음에 일어날 일을 추측하십시오 ...

생각해 볼 것이 있다고 생각합니다.


나는 동의하지 않는다. 정밀도가 증가함에 따라 공식( y=( int )(x+ 0.9999999999999997 ); ) 은 작동을 멈추지 않고 동일한 방식으로 작동합니다. 이전과 마찬가지로 DBL_EPSILON(현재 값: 0.00000000000000022204460492503131)에서 0.00000000000000003까지 숫자의 소수 부분 범위에서 오류가 발생합니다. 현재 DBL_EPSILON의 크기, t .e. 2.2204460492503131e-016으로. 그런 범위의 오류는 무시해도 된다고 생각합니다.

그리고 일반적으로 "기계의 정확도"라는 용어는 무엇입니까? double 및 기타 유형에 대한 표준화된 정밀도가 있습니다. 당신의 추론을 무시하십시오. PS에 대해 일반적으로 조용히 하십시오.))) 기분을 상하게 할까봐 두렵습니다.

감사합니다.

 
Nikolai Semko :

나는 동의하지 않는다. 정밀도가 증가함에 따라 공식( y=( int )(x+ 0.9999999999999997 ); ) 은 작동을 멈추지 않고 동일한 방식으로 작동합니다. 이전과 마찬가지로 DBL_EPSILON(현재 값: 0.00000000000000022204460492503131)에서 0.00000000000000003까지 숫자의 소수 부분 범위에서 오류가 발생합니다. 현재 DBL_EPSILON의 크기, t .e. 2.2204460492503131e-016으로. 그런 범위의 오류는 무시해도 된다고 생각합니다.

그리고 일반적으로 "기계의 정확도"라는 용어는 무엇입니까? double 및 기타 유형에 대한 표준화된 정밀도가 있습니다. 당신의 추론을 무시하십시오. PS에 대해 일반적으로 조용히 하십시오.))) 기분을 상하게 하는 것이 두렵습니다.

감사합니다.

우리가 시장의 가격과 관련하여 그것을 취한다면 일반적으로 정확도를 소수점 이하 5-6 자리로 남겨 둘 수 있으며 수학에서 일하기 때문에 누구에게 그리고 무엇을 위해 새로운 빠른 계산이 필요한지 알 수 없습니다 , 함수가 계산에서 실수를 범할 수 있는 값을 언제 누가 넣을 수 있는지가 중요하지 않은 "바보 행동의 원칙"을 적용해야 합니다.

"공인 없음"에 대해 나는 당신의 추론을 평가하지 않았고 당신의 장점을 과소 평가하지 않았습니다. 그것이 내가 당신에게 바라는 것입니다. 자신을 존중하십시오. 누구나 얼굴을 흙에 찔러 넣을 수 있습니다. 상대방에게 당신의 행동으로 무례한 행동을 할 이유를 줄 가치가 있습니까? 우리는 모두 무언가에서 발전했지만 무언가는 단순히 우리에게 흥미롭지 않거나 중요하지 않습니다.
우리는 어셈블러와 컴파일러 이후에 코드에 어떤 일이 일어날지 상상한다는 사실에 대해 이야기하고 있기 때문입니다. 몇 가지 문구를 말씀드리겠습니다.

프로세서에는 각 레지스터에 제한된 수의 비트가 있기 때문에 덧셈, 뺄셈 또는 기타 연산은 플래그 작업의 일부 미묘함과 관련이 있습니다.
어셈블러에서 일한 사람으로서 무엇이 문제인지 이해해야 합니다.
따라서 다른 모델에서 동일한 번호를 사용하여 어셈블러에서 코드를 작성하는 경우 다른 프로세서 모델의 ADD 명령에 오버플로가 발생하고 일반적으로 레지스터에 맞지 않을 수 있으며 이전의 8비트부터 잘립니다. 현재 세대의 최대 64비트 이상 세대와 이것이 미래에 어떻게 바뀔 수 있습니까? 80년대)?

감사합니다.
 
당신이 방금 발명한 기능, 나는 그것이 필요한 곳에서 필요한 것과 관련하여 수년 동안 사용해 왔습니다. 제 생각에는 대량 교체에 대해 의문의 여지가 없습니다. 그렇지 않으면 이미 수행했을 것입니다. 프로파일링을 열고 코드에서 실행 속도가 느려지는 위치를 확인하는 것이 좋습니다 . 이는 분명히 수학 함수가 아닙니다. 기본적으로 이들은 주기, 다양한 종류의 쿼리 등입니다. 수학 함수는 가장 빠르며 내 생각에는 그다지 합리적이지 않은 것을 개척하려고 합니다.

감사합니다.
 
Nikolai Semko :

자, 우수한 학생 여러분, 설득했습니다. 나는 당신을 위해 ceil 기능을 변경하고 있습니다:

이 옵션은 다음 옵션보다 25-50% 느리게 작동합니다. y=( int )(x+ 0.9999999999999997 ); 그러나 반면에 가능한 한 정확하고 음수에 대해서도 동일하게 작동하며 동시에 여전히 ceil(x) 함수보다 약 3배 빠릅니다.

그러나 평민이자 C 학생인 나 자신은 9와 함께 옵션을 사용할 것입니다. 왜냐하면 나는 당신의 모든 주장이 지루하다고 생각하고 오랫동안 어셈블러로 프로그래밍을 해왔고 따라서 컴파일 후 코드에 어떤 일이 일어날지 상상하는 사람으로서, 당신이 그것들 없이 할 수 있는 곳에 검사를 하는 것은 과잉입니다.

성격으로의 전환은 전통적으로 실질적인 논쟁의 부재를 의미합니다. 그러나 나는 여전히 질문을 할 것입니다. 백만 라운드의 시간을 8밀리초에서 5밀리초 또는 2밀리초로 줄이게 된 동기는 무엇입니까? 이러한 지연이 병목 현상으로 판명된 경우에도 프로세서에 실제로 부하를 가한 것은 무엇입니까? 나는 그러한 요구를 충족시키지 못했습니다. 추상적이고 학문적인 관심이 아닐까요?
 
Vladimir :
성격으로의 전환은 전통적으로 실질적인 논쟁의 부재를 의미합니다.

대화 상대를 모욕하려는 시도에서 문화적 행동의 부족뿐만 아니라 동의합니다.

감사합니다.

 
Andrey Kisselyov :
"불합격"에 대해 나는 당신의 추론을 평가하지 않았고 당신의 장점을 얕보지 않았습니다. 그것이 내가 당신에게 바라는 것입니다. 자신을 존중하십시오. 누구나 얼굴을 흙에 찔러 넣을 수 있습니다. 상대방에게 당신의 행동으로 무례한 행동을 할 이유를 줄 가치가 있습니까? 우리는 모두 무언가에서 발전했지만 무언가는 단순히 우리에게 흥미롭지 않거나 중요하지 않습니다.
블라디미르 :
성격으로의 전환은 전통적으로 실질적인 논쟁의 부재를 의미합니다.
안드레이 키셀료프 :

대화 상대를 모욕하려는 시도에서 문화적 행동의 부족뿐만 아니라 동의합니다.

우와! 물론 누군가에게 기분이 상했다면 사과드립니다. 아마도 당신은 내 말에 기분이 상했을 것입니다.

니콜라이 셈코 :

자, 우수한 학생 여러분, 설득했습니다. 나는 당신을 위해 ceil 기능을 변경하고 있습니다:

그러나 평민이자 C 학생인 나 자신은 9와 함께 옵션을 사용할 것입니다. 왜냐하면 나는 당신의 모든 주장이 지루하다고 생각합니다 ...

니콜라이 셈코 :

그리고 일반적으로 "기계의 정확도"라는 용어는 무엇입니까? double 및 기타 유형에 대한 표준화된 정밀도가 있습니다. 당신의 추론을 무시하십시오. PS에 대해 일반적으로 조용히 하십시오.))) 기분을 상하게 하는 것이 두렵습니다.

글쎄요... 당신은 상상력이 풍부한 것 같아요. 평소의 다정한 농담에서 당신은 "개인적으로 가는 것", "대화 상대에게 굴욕감을 주려는 시도", "비하하는 것"을 분별했습니다.

아니면 내가 뭔가를 놓치고 다른 곳에서 품위의 경계를 넘었나요?

죄송합니다, Andrey, 하지만 저는 분명히 귀하가 해당 PS에 쓴 내용을 이해하기에 충분한 지식과 경험이 없습니다.

안드레이 키셀료프 :
추신: 특정 수의 수에서 수식이 실패하는 다른 옵션이 있을 수 있습니다. 다른 기계로의 전환이나 사용자가 알지 못한 컴파일러의 변경으로 인해, 또는 기계에서 숫자의 표현이 변경되었을 때, 또는 컴파일할 때 숫자소수 부분의 감소로 인해 지속적으로 오류를 선택합니다. 터미널의 새 버전 ... 그러나 무엇을 변경할 수 있는지 결코 알 수 없습니다. 그다지 좋지 않은 것 같습니다. IF를 만들거나 오류를 반복해서 작성하여 다음에 일어날 일을 추측하십시오 ...
누군가 나에게 쓰여진 것의 의미를 설명할 수 있다면 매우 감사할 것입니다.
다시 한 번 제 말투에 대해 사과드립니다. 나는 항상 동료 간의 상호 존중과 올바른 행동을 지지합니다. 현혹된다.
 
Vladimir :
백만 라운드의 시간을 8밀리초에서 5밀리초 또는 2밀리초로 줄이게 된 동기는 무엇입니까? 이러한 지연이 병목 현상으로 판명된 경우에도 프로세서에 실제로 부하를 가한 것은 무엇입니까? 나는 그러한 요구 사항을 충족하지 못했습니다. 추상적이고 학문적인 관심이 아닐까요?
안드레이 키셀료프 :
프로파일링을 열고 코드에서 실행 속도가 느려지는 위치를 확인하는 것이 좋습니다 . 이는 분명히 수학 함수가 아닙니다. 기본적으로 이들은 주기, 다양한 종류의 쿼리 등입니다. 수학 함수는 가장 빠르며 내 생각에는 그다지 합리적이지 않은 것을 개척하려고 합니다.
왜 당신은 무엇인가가 나를 늦추고 있다고 생각하는지 모르겠습니다. 오히려 내 알고리즘이 가장 빠르다고 생각합니다. 속도가 조금 아쉽네요. 물론 이러한 반올림 함수의 대체 대체를 사용하면 퍼센트의 일부에 불과한 아주 작은 이득을 얻을 수 있습니다. 그러나 스레드의 세계와 함께 말하는 것처럼. 예를 들어 항공기와 로켓 과학에서도 마찬가지입니다. 강도를 희생하지 않고 무게를 줄이기 위한 투쟁에서 그들은 볼트까지 모든 것을 수정합니다. 아마도 이것이 오늘날 비행기가 논리를 무시하고 가장 안전한 운송 수단인 이유 중 하나일 것입니다.
 
Nikolai Semko :

우와! 물론 누군가에게 기분이 상했다면 사과드립니다. 아마도 당신은 내 말에 기분이 상했을 것입니다.

글쎄요... 당신은 상상력이 풍부한 것 같아요. 평소의 친근한 농담 에서 당신은 "개인적으로 가는 것", "대화 상대에게 굴욕감을 주려는 시도", "비하하는 것"을 분별했습니다.

친구에게 "장난"하면 친구가없고, 때로는 웃으면서 친구와 의견을 소중히 여기지 않는 광대가 주변에 있습니다.

니콜라이 셈코 :

아니면 내가 뭔가를 놓치고 다른 곳에서 품위의 경계를 넘었나요?

통과했습니다. 저는 당신의 친구나 형제 또는 가까운 사람이 아니었고 앞으로도 그러하지 않습니다. 그래서 당신은 더욱 공개적으로 나에게 어떤 종류의 평가를 줄 수 있습니다.

니콜라이 셈코 :
죄송합니다, Andrey. 하지만 저는 분명히 당신이 그 PS에 쓴 것을 이해하기에 충분한 지식과 경험이 없습니다. 누군가가 쓰여진 것의 의미를 나에게 설명해 준다면 매우 감사할 것입니다.

요점은 어떤 이유에서인지 명확하지 않은 PS로 작성된 내용이 분명 하다는 것입니다. 빠른 공식을 적용하는 기술이 미래에 어떻게 발전할지, 플랫폼이 어떻게 발전할지 모릅니다. 나중에 컴파일러에 무엇이 추가될지, 프로세서 레지스터 공간에서 숫자가 어떻게 표시되는지 알지 못합니다. 이에 대해 아무것도 모르고 상수를 도입하여 모든 것이 다음과 같이 될 것이라고 주장합니다. 분명히 긍정적으로 결정되었고 항상 그래야 하는 것처럼 이것은 내가 그렇게 말할 수 있다면 그것은 망상입니다.

포럼의 다른 사람들이 당신의 공식을 받아들여 C, Pascal 또는 다른 어딘가에 밀어 넣을 수 있다고 생각한다면 이러한 점을 고려해야 합니다. 수학에는 플랫폼이나 프로그래밍 언어에 따라 경계가 없습니다.

니콜라이 셈코 :
다시 한번 제 말투에 대해 사과드립니다. 나는 항상 동료 간의 상호 존중과 올바른 행동을 지지합니다. 기만당하다

사과는 받아들여진다. 실수를 다시 반복하지 마십시오. 그렇지 않으면 당신의 말은 공허한 수다입니다.

감사합니다.

 
Nikolai Semko :
왜 당신은 무엇인가가 나를 늦추고 있다고 생각하는지 모르겠습니다. 오히려 내 알고리즘이 가장 빠르다고 생각합니다. 속도가 조금 아쉽네요. 물론 이러한 반올림 함수의 대체 대체를 사용하면 퍼센트의 일부에 불과한 아주 작은 이득을 얻을 수 있습니다. 그러나 스레드의 세계와 함께 말하는 것처럼. 예를 들어 항공기와 로켓 과학에서도 마찬가지입니다. 강도를 희생하지 않고 무게를 줄이기 위한 투쟁에서 그들은 볼트까지 모든 것을 수정합니다. 아마도 이것이 오늘날 비행기가 논리를 무시하고 가장 안전한 운송 수단인 이유 중 하나일 것입니다.
나는 논리에 반하지 않고 속도를 높일 수 있는 프로그래밍에 대한 합리적인 접근 방식을 지지합니다. 그렇게 하는 것이 더 좋지만 건강한 생활 방식에서 벗어난 것이기 때문에 모든 "질병"을 치료해야 합니다.

감사합니다.
 
Andrey Kisselyov :

친구에게 "장난"하면 친구가없고, 때로는 웃으면서 친구와 의견을 소중히 여기지 않는 광대가 주변에 있습니다.

Nikolai가 보어에 대해 옳았던 것 같습니다))

여기에서 개인적으로 나는 어디에서나 사람으로의 전환을 보지 못했습니다. 그리고 당신의 글에는 정말 많은 편지가 있지만 모든 것이 어떻게든 주제를 벗어나서 논쟁을 위해 논쟁하는 것처럼 느껴집니다.

사유: