Android 프로 그래 밍 계산 함수 타임 스탬프 에 관 한 방법 요약

이 사례 는 안 드 로 이 드 프로 그래 밍 함수 시간 스탬프 와 관련 된 방법 을 설명 한다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
성능 을 하 는 사람 에 게 시간 이 어디 에 쓰 였 는 지 아 는 것 이 중요 하 다.함수 전후 에 시스템 의 시간 을 얻 을 수 있 고 시간 스탬프 를 계산 하면 모든 함수 의 시간 을 얻 을 수 있다.
JAVA 에서System.currentTimeMillis()를 통 해 얻 을 수 있 습 니 다.

long start_time = System.currentTimeMillis();
View.draw(canvas);
long end_time = System.currentTimeMillis();
long spend_time = end_time - start_time;
Log.i(TAG,"mView.draw: spend_time = " + spend_time);

native 코드 에서 함수 의 실행 시간 을 아래 방식 으로 얻 을 수 있 습 니 다.

#include <stdio.h>
#include <sys/time.h>
void main ()
{
  struct timeval time;
  gettimeofday(&time, NULL);
  printf ( "\007The current date/time is: %lld
", time.tv_sec * 1000 + time.tv_usec /1000); }
kernel 에서 rtc 를 통 해 상부 에서 응용 하 는 시간 과 대응 할 수 있 습 니 다.예 를 들 어 다음 과 같 습 니 다.

#include <linux/time.h>
#include <linux/rtc.h>
struct timespec time_start, time_end;
struct rtc_time tm_start, tm_end;
long time_nsec = 0;
getnstimeofday(&time_start);
rtc_time_to_tm(time_end.tv_sec, &tm_start);
printk(KERN_ERR "
(%d-%02d-%02d %02d:%02d:%02d.%09lu UTC)
", tm_start.tm_year + 1900, tm_start.tm_mon + 1, tm_start.tm_mday, tm_start.tm_hour, tm_start.tm_min, tm_start.tm_sec, time_start.tv_nsec); ....... getnstimeofday(&time_end); rtc_time_to_tm(time_end.tv_sec, &tm_end); time_nsec = time_end.tv_nsec - time_start.tv_nsec; printk(KERN_ERR "
tid: %d, common: %s
", current->pid, current->comm); printk(KERN_ERR "
end(%d-%02d-%02d %02d:%02d:%02d.%09lu UTC)
", tm_end.tm_year + 1900, tm_end.tm_mon + 1, tm_end.tm_mday, tm_end.tm_hour, tm_end.tm_min, tm_end.tm_sec, time_end.tv_nsec); printk(KERN_ERR "
mdss_fb_commit_wq_handler end, time_nsec : %ld
" , time_nsec);
물론 자바 에서 네 이 티 브 까지 하나의 프로 세 스 를 따라 가면 user space 에 시간 이 많이 걸 리 고 kernel 에 시간 이 걸 리 지 않 는 것 을 발견 할 수 있 습 니 다.이것 은 프로 세 스 스케줄 이 존재 하기 때 문 입 니 다.최근 에 이러한 문제 가 발생 했 습 니 다.user space 의 한 함수 에 30ms 가 걸 렸 지만 kernel 에 서 는 시간 이 걸 리 지 않 았 습 니 다.kernel 에서 user space 로 돌아 갈 때 프로 세 스 스케줄 링 을 했 기 때 문 입 니 다.이때 user space 의 thread block 이 발생 했 기 때문에 주의 하 시기 바 랍 니 다.
자바 가 현재 의 년 월 일,시 분 초 형식의 시간 을 얻 었 습 니 다.

import java.text.SimpleDateFormat;
SimpleDateFormat mFormat = new java.text.SimpleDateFormat("yyyy:MM:dd HH:mm:ss:SSS");
String time = mFormat.format(System.currentTimeMillis());

Native 는 현재 의 년 월 일,시 분 초 형식의 시간 을 얻 었 습 니 다.

timeval tv;
gettimeofday(&tv, NULL);
int milli = tv.tv_usec / 1000;
char buffer [80];
strftime(buffer, 80, "%Y:%m:%d %H:%M:%S", localtime(&tv.tv_sec));
char currentTime[84] = "";
sprintf(currentTime, "%s.%d", buffer, milli);
ALOGD("time: %s 
", currentTime);
지금까지 드디어 안 드 로 이 드 자바,네 이 티 브,커 널 의 시간 을 대응 시 켰 습 니 다.시스템 성능 을 하 는 사람 에 게 얼마나 중요 한 일 입 니까?
PS:본 사 이 트 는 유 닉 스 타임 스탬프 변환 도 구 를 제공 합 니 다.다양한 일반적인 언어 가 타임 스탬프 에 대한 조작 방법 을 포함 하여 참고 할 수 있 습 니 다.
유 닉 스 타임 스탬프(timestamp)변환 도구:
http://tools.jb51.net/code/unixtime
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,Android 날짜 및 시간 조작 기법 요약,Android 개발 입문 및 진급 강좌,안 드 로 이 드 멀티미디어 조작 기법 모음(오디 오,비디오,녹음 등),Android 기본 구성 요소 사용법 요약Android 보기 기술 요약
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기