티스토리 뷰
그냥 의미없는 일정 크기의 file 을 만들어야 할 일이 생겨서 간만에 python 을 가지고 놀아봤다.
version : python 2.5
근데 하다 보니 재밌는 모습이 보였다.
일단 file 을 일정크기로 만드는 작업이었기 때문에 file I/O 가 들어갔는데,
이때 순수하게 file I/O 만으로 1byte 씩 찍는 작업을 했더니 조금 오래 걸렸다.
그래서 어느정도 일정량의 buffer 를 잡고 file I/O 를 했더니 속도가 빨라졌다.
어느 정도의 크기의 buffer 가 좋을지를 측정해 보고자 아래 같은 code를 사용했다.
물론 string 을 만드는 작업에 대한 load 때문에 차이가 생길지도 모르겠다. 확실히 너무 큰 string 을 만들어서 file write 를 할때는 string 의 부하가 훨씬 컸다. 하지만 신기하게도 file write 의 부하도 같이 커졌다.
확실히는 모르지만 write() 내부에도 buffer 가 존재하지 않을까 싶다.(확인이 필요하다.)
여하튼 아래 상황에서 가장 괜찮은 속도를 가져다 준 것은 10,000 byte 정도의 string 을 만들어 사용했을 때였다.
version : python 2.5
근데 하다 보니 재밌는 모습이 보였다.
일단 file 을 일정크기로 만드는 작업이었기 때문에 file I/O 가 들어갔는데,
이때 순수하게 file I/O 만으로 1byte 씩 찍는 작업을 했더니 조금 오래 걸렸다.
그래서 어느정도 일정량의 buffer 를 잡고 file I/O 를 했더니 속도가 빨라졌다.
어느 정도의 크기의 buffer 가 좋을지를 측정해 보고자 아래 같은 code를 사용했다.
물론 string 을 만드는 작업에 대한 load 때문에 차이가 생길지도 모르겠다. 확실히 너무 큰 string 을 만들어서 file write 를 할때는 string 의 부하가 훨씬 컸다. 하지만 신기하게도 file write 의 부하도 같이 커졌다.
확실히는 모르지만 write() 내부에도 buffer 가 존재하지 않을까 싶다.(확인이 필요하다.)
여하튼 아래 상황에서 가장 괜찮은 속도를 가져다 준 것은 10,000 byte 정도의 string 을 만들어 사용했을 때였다.
#/usr/bin/env python # -*- coding: mbcs -*- """ This app. is for making a specific size of file chunk. """ import sys import time import random def main(argv=None) : if argv is None: argv = sys.argv argc = len(argv) size = 10000000;# 10MB makeChunk(size); def makeChunk(size): filename = "chunk" + str(random.randint(0,100)) + '.chk'; try: wf = open(filename , "wb"); except IOError: print 'IOError'; if wf is not None: wf.close(); else: MEMMAX = 10000; # byte if size >= MEMMAX: strsize = MEMMAX; else: strsize = size; t1 = time.time(); emptystr = ''.join([`num`[0] for num in xrange(0, strsize)]); t2 = time.time(); end = size / strsize; for i in xrange(0, end): wf.write(emptystr); t3 = time.time(); print 'total time', t3-t1; print 'string make time', t2-t1; print 'file write time', t3-t2; wf.close(); if __name__ == '__main__' : main() |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 과학
- 영귤
- icon program
- 대일농장
- icon tool
- 제주녹색농원
- 칠오름농장
- 제주영귤
- network error
- 인테리어
- sudachi
- 명언
- 무릎마사지
- 상식
- 의학
- 스타치
- 고강도
- 녹색농원
- 칠오름
- 편집프로그램
- 늙기
- breakpoint
- 미스터피자주문
- 인공안구
- 보드고글
- 데크에 바인딩묶기
- 그림편집
- 샤워기전
- 인공눈
- 영귤차
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함