파이썬을 이용한 생산적인 소규모 자료처리
Productive Small-scale Data Processing using Python
0
조회
0
다운로드
2
인용
0
참고문헌
키워드
초록
파이썬은 펄, 루비 등과 같은 객체지향 프로그래밍 언어로, 해석기를 통해 작동하며 동적 자료형을지원한다. 계산 속도를 중시하여 정적 자료형을 이용하는 포트란 프로그래밍에서와 달리 파이썬 프로그래밍에서는 개발자의 생산성을 더 중시한다. 일반적인 파이썬 프로그램의 경우 동일한 기능의 포트란 프로그램에 비해개발 시간은 짧지만 실행 시간은 길다. 최근 수치 계산 라이브러리들이 발전되면서 파이썬 프로그램의 실행시간이 짧아지고 있고, 과학 및 공학 계산에 파이썬을 이용하는 사례가 증가하고 있다. 본 연구에서는 탄성파자료처리에 사용되는 간단한 알고리즘들을 대상으로 수치 라이브러리들을 통해 파이썬 프로그램의 실행 속도를향상시키는 방법을 살펴본다. 예제들을 통해 프로그램 작성 시간을 고려하면 소규모 자료처리의 경우 포트란대신 파이썬과 Numpy 라이브러리를 이용하는 것이 더 효율적임을 알 수 있다.
Abstract
Python is an object oriented programming language, similar to Perl and Ruby. It supports a dynamic typing and operates using a python interpreter. Static typing languages such as Fortran and C emphasize efficient execution program. On the other hand, Python’s design philosophy values productivity of programmers. In general, a Python version of an algorithm is shorter and slower than its Fortran or C versions. Recent development of numerical libraries shortened the runtime of Python numerical programs and many scientists and engineers adopt Python as their programming language. In this study, I compared Python and Fortran programming languages by developing functions of simple algorithms used in seismic data processing. I tried to make Python programs efficient by exploiting numerical libraries. Benchmarking examples show that small-scale data processing programming using Python and Numpy library can be more efficient than that using Fortran language.
참고문헌 (32)
- Beazley, D. M., "Python essential reference", pp.5~24 (2009), Developer’s Library
- Billette, F.J., "The 2004 BP velocity benchmark", 67th Annual Meeting, EAGE, pp.8035~ (2005)
- "BLAS" (2014)[URL]
- Fleming, P.J., "How not to lie with statistics: The correct way to summarize benchmark results", Communications of the ACM, 29(3), pp.218~221 (1986)
- "IEEE Spectrum" (2014)[URL]
- "IPython" (2014)[URL]
- Janert, P. K., "Data analysis with open source tools", pp.439~ (2010), O’Reilly
- "Julia Programming Language" (2014)[URL]
- Kreyszig, E., "Advanced engineering mathematics", pp.263~ (2011), John Wiley & Sons, Inc
- Lanaro, G., "Python high performance programming", pp.49~70 (2013), Packt Publishing
- "LAPACK" (2014)[URL]
- "LLVM" (2014)[URL]
- "Madagascar" (2014)[URL]
- Mankiw, N. G., "Principles of economics", pp.12~ (2011), Cengage Learning
- "Matlab" (2014)[URL]
- McKinney, W., "Python for data analysis", pp.3~6 (2012), O’Reilly
- "Netlib" (2014)[URL]
- "Numba" (2014)[URL]
- "Numexpr" (2014)[URL]
- "Numpy" (2014)[URL]
- Prechelt, L., "An empirical comparison of seven programming languages", IEEE Computer, 33(10), pp.23~29 (2000)
- Press, W. H., "Numerical Recipes in Fortran 90: Vol. 2", pp.1~ (1996), Cambridge University Press
- "PyLab" (2014)[URL]
- "PyPy" (2014)[URL]
- "Python" (2014)[URL]
- "SciPy" (2014)[URL]
- "Seismic Unix" (2014)[URL]
- "The Python Language Reference" (2014)[URL]
- "The R project" (2014)[URL]
- Vaingast, S., "Beginning python visualization", pp.249~284 (2009), Apress
- Versteeg, R., "The Marmousi experience: velocity model determination on a synthetic complex data set", Leading Edge, 13, pp.927~936 (1994)
- Weinberg, G. M., "The Psychology of computer programming: Silver anniversary edition", pp.63~ (1998), Weinberg &Weinberg
