2014-06-08 7 views
0

나는 두 날짜 값을 획득하고이를 빼기, 가끔은 음수를 구하십시오bash에서 날짜의 차이가 음수로 나타나는 이유는 무엇입니까?

이 날짜 객체 사이의 작업이 100 × 100의 예를 들어 SciDB에서 두 배열 사이의 동작 (곱셈을하고있다

배열). 다른 경우에이 작업을 수행하는 데 1 초도 걸리지 않으므로 나노 초를 사용합니다. 예 출력 : I 퍼티 통해 SSH 통해 컴퓨터에 .sh로 스크립트를 실행하고있어

[email protected]:~/some-scripts$ ./test_mult_100.sh 
execution time was 273467147 s. 
[email protected]:~/some-scripts$ ./test_mult_100.sh 
execution time was -735035957 s. 

. 정말 이상한 점은 중간 작업을 수행 한 후 3 초 이상 경과 한 후에도 음수를 얻을 수 있다는 것입니다. 나는 start_time 및 end_time 변수의 값을 겹쳐 쓰지 않도록 설정을 해제합니다. 그렇게하지 않으면 문제가 발생하지 않을 것입니다.

+0

아마 'expr'의 숫자가 너무 큽니까? 긍정적 인 결과도 잘못 보입니다. – tripleee

+0

나는 그것을 고려조차하지 않았지만, 그것은 완전히 의미가 있습니다. 나노 초를 밀리 초로 변경하고 더 잘 작동하는지 확인해 보겠습니다. –

+0

불행히도 여전히 오류가 발생합니다. $ (date -u + % N) 부분이 원하는만큼 일관성이없는 것 같습니다. 이 값을 1000000으로 나누면 (밀리 초 단위로 값을 변환하는 경우) 때때로 가끔 부정적인 값을 얻을뿐만 아니라 때때로 "기본 값에 너무 큰 값"이라는 오류 메시지가 나타납니다. 나는이 코드로 그렇게했다. start_time = $ (($ (date + % N)/1000000)) 나는 날짜를 사용하지 않는 접근법을 시도 할 것이라고 생각한다. –

답변

4

%N은 현재 초에 대한 나노초의 수입니다.

신기원 이래로 나노초의 숫자가 아닙니다.

+0

이것은 사실이며 문제의 핵심입니다. 이 후 나는이 문제를 다시 조사하여 Stack Exchange에 관한 게시물을 발견했다 (Stack Overflow는 아니지만 관련이있다). 그들의 게시물은 여기에 있습니다 : http://superuser.com/questions/599072/bash-execution-time-in-milliseconds-mac-osx-user, Mac 사용자를 대상으로했지만 내 문제를 해결하기에 충분합니다. –

+1

나는 또한 아마 내 대답을 게시해야한다는 것을 깨달았다. 기본적으로 시간 스탬프를 검색하는 데 % s을 추가하여 신기원 이후로 초를 얻습니다. 그 후 % N은 나노초 단위로 가져옵니다. 예 : start_time = $ (날짜 -u + % s % N) –