텍스트 파일 정렬에 관한 궁금증 입니다.

lovetmt의 이미지

100줄 200줄 정도면 몇초 안되서 바로 저장이 되는데요...
600만줄의 자료를 내림차순으로 정렬하니 어제 저녁부터 돌렸는데 아직까지 끝이 안나네요...
제 스크립트가 틀린건 아닌거 같은데... 600만줄의 자료를 돌리는데 너무 많은 시간이 필요한거 같아서...
혹시 아이디어가 있으신 분은 댓글 부탁드립니다. ㅠㅜ

---------------------------------이건 제가 만든 스크립트 입니다-----
텍스트 파일안에 실수 정수 캐릭터가 있어서 일단 자료 속성대로 분류를 했구요
후에 12행에 대한 내림차순 정렬하면서 그에 대한 열도 함께 바뀌는 스크립트입니다.

IMPLICIT NONE

integer :: i, j, n

integer,allocatable :: grade1(:,:)
character(len=14),allocatable :: grade2(:,:)
real*4, allocatable :: grade3(:,:)
integer,allocatable :: grade4(:,:)
real*4, allocatable :: grade5(:,:)
integer,allocatable :: grade6(:,:)

integer,allocatable :: temp1(:,:)
character(len=14),allocatable :: temp2(:,:)
real*4, allocatable :: temp3(:,:)
integer,allocatable :: temp4(:,:)
real*4, allocatable :: temp5(:,:)
integer,allocatable :: temp6(:,:)

n = 0

!---------------------------------------------------------------------------------
open(10,file='/data1/jykim/2Sta/result/txt/Train/rearray/01hr_Train_SPMP.txt',status='old')
open(100,file='/data1/jykim/2Sta/result/txt/Rac/01hr_Train_SPMP_naelim.txt', status='unknown')
!---------------------------------------------------------------------------------

do
read(10,*,end=110)
n=n+1
enddo
110 continue
rewind(10)

write (*,*) "====================================================="
write (*,*) "line=", n
write (*,*) "====================================================="

allocate (grade1(1,n))
allocate (grade2(2:3,n))
allocate (grade3(4:5,n))
allocate (grade4(6:11,n))
allocate (grade5(12:13,n))
allocate (grade6(14:15,n))

allocate (temp1(1,n))
allocate (temp2(2:3,n))
allocate (temp3(4:5,n))
allocate (temp4(6:11,n))
allocate (temp5(12:13,n))
allocate (temp6(14:15,n))

do i= 1, n
read(10,*) grade1(1,i), grade2(2:3,i), grade3(4:5,i), &
&grade4(6:11,i), grade5(12:13,i), grade6(14:15,i)
enddo

do i=1,n-1
do j=i+1, n
if(grade5(12,i).le.grade5(12,j)) then

temp1(1,i)=grade1(1,i)
temp2(2:3,i)=grade2(2:3,i)
temp3(4:5,i)=grade3(4:5,i)
temp4(6:11,i)=grade4(6:11,i)
temp5(12:13,i)=grade5(12:13,i)
temp6(14:15,i)=grade6(14:15,i)

grade1(1,i)=grade1(1,j)
grade2(2:3,i)=grade2(2:3,j)
grade3(4:5,i)=grade3(4:5,j)
grade4(6:11,i)=grade4(6:11,j)
grade5(12:13,i)=grade5(12:13,j)
grade6(14:15,i)=grade6(14:15,j)

grade1(1,j)=temp1(1,i)
grade2(2:3,j)=temp2(2:3,i)
grade3(4:5,j)=temp3(4:5,i)
grade4(6:11,j)=temp4(6:11,i)
grade5(12:13,j)=temp5(12:13,i)
grade6(14:15,j)=temp6(14:15,i)

endif
enddo
enddo
write (*,*) "======WRITING======="
do i = 1, n
write(100,'(i7,2a16,2f14.7,6i7,2f10.2,2i7)') grade1(1,i), grade2(2:3,i),&
& grade3(4:5,i), grade4(6:11,i), grade5(12:13,i), grade6(14:15,i)
end do

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.