how to speed up the code??

Posted by kaushik on Stack Overflow See other posts from Stack Overflow or by kaushik
Published on 2010-06-09T14:28:39Z Indexed on 2010/06/09 14:32 UTC
Read the original article Hit count: 271

Filed under:
|

in my program i have a method which requires about 4 files to be open each time it is called,as i require to take some data.all this data from the file i have been storing in list for manupalation. I approximatily need to call this method about 10,000 times.which is making my program very slow?

any method for handling this files in a better ways and is storing the whole data in list time consuming what is better alternatives for list?

I can give some code,but my previous question was closed as that only confused everyone as it is a part of big program and need to be explained completely to understand,so i am not giving any code,please suggest ways thinking this as a general question...

thanks in advance

© Stack Overflow or respective owner

how to speed up the code??

Posted by kaushik on Stack Overflow See other posts from Stack Overflow or by kaushik
Published on 2010-06-09T11:05:50Z Indexed on 2010/06/09 11:12 UTC
Read the original article Hit count: 271

Filed under:

i have very huge code about 600 lines plus. cant post the whole thing here.

but a particular code snippet is taking so much time,leading to problems.

here i post that part of code please tell me what to do speed up the processing..

please suggest the part which may be the reason and measure to improve them if this small part of code is understandable.

using_data={}
def join_cost(a , b):
    global using_data
    #print a
    #print b
    save_a=[]
    save_b=[]
    print 1
    #for i in range(len(m)):
        #if str(m[i][0])==str(a):
    save_a=database_index[a]
    #for i in range(len(m)):
     #   if str(m[i][0])==str(b):
    #print 'save_a',save_a
    #print 'save_b',save_b
    print 2
    save_b=database_index[b]
    using_data[save_a[0]]=save_a
    s=str(save_a[1]).replace('phone','text')
    s=str(s)+'.pm'
    p=os.path.join("c:/begpython/wavnk/",s)
    x=open(p , 'r')
    print 3
    for i in range(6):
        x.readline()
    k2='a'
    j=0
    o=[]
    while k2 is not '':
        k2=x.readline()
        k2=k2.rstrip('\n')
        oj=k2.split(' ')
        o=o+[oj]
        #print o[j]
        j=j+1
        #print j
        #print o[2][0]

    temp=long(1232332)
    end_time=save_a[4]
    #print end_time
    k=(j-1)
    for i in range(k):
        diff=float(o[i][0])-float(end_time)
        if diff<0:
            diff=diff*(-1)
        if temp>diff:
            temp=diff
            pm_row=i
    #print pm_row
    #print temp
    #print o[pm_row]
    #pm_row=3
    q=[]
    print 4
    l=str(p).replace('.pm','.mcep')
    z=open(l ,'r')
    for i in range(pm_row):
        z.readline()
    k3=z.readline()
    k3=k3.rstrip('\n')
    q=k3.split(' ')
    #print q
    print 5
    s=str(save_b[1]).replace('phone','text')
    s=str(s)+'.pm'
    p=os.path.join("c:/begpython/wavnk/",s)
    x=open(p , 'r')
    for i in range(6):
        x.readline()
    k2='a'
    j=0
    o=[]
    while k2 is not '':
        k2=x.readline()
        k2=k2.rstrip('\n')
        oj=k2.split(' ')
        o=o+[oj]
        #print o[j]
        j=j+1
        #print j
        #print o[2][0]

    temp=long(1232332)
    strt_time=save_b[3]
    #print strt_time
    k=(j-1)
    for i in range(k):
        diff=float(o[i][0])-float(strt_time)
        if diff<0:
            diff=diff*(-1)
        if temp>diff:
            temp=diff
            pm_row=i
    #print pm_row
    #print temp
    #print o[pm_row]
    #pm_row=3
    w=[]
    l=str(p).replace('.pm','.mcep')
    z=open(l ,'r')
    for i in range(pm_row):
        z.readline()
    k3=z.readline()
    k3=k3.rstrip('\n')
    w=k3.split(' ')
    #print w

    cost=0
    for i in range(12):
        #print q[i]
        #print w[i]
        h=float(q[i])-float(w[i])
        cost=cost+math.pow(h,2)
    j_cost=math.sqrt(cost)
    #print cost

    return j_cost

def target_cost(a , b):
    a=(b+1)*3
    b=(a+1)*2
    t_cost=(a+b)*5/2
    return t_cost

r1='shht:ra_77'
r2='grx_18'
g=[]
nodes=[]
nodes=nodes+[[r1]]
for i in range(len(y_in_db_format)):
    g=y_in_db_format[i]
    #print g
    #print g[0]
    g.remove(str(g[0]))
    nodes=nodes+[g]
nodes=nodes+[[r2]]
print nodes
print "lenght of nodes",len(nodes)


lists=[]
#lists=lists+[r1]
for i in range(len(nodes)):
    for j in range(len(nodes[i])):
        lists=lists+[nodes[i][j]]
#lists=lists+[r2]
print lists

distance={}
for i in range(len(lists)):
    if i==0:
        distance[str(lists[i])]=0
    else:
        distance[str(lists[i])]=long(123231223)
#print distance


group_dist=[]
infinity=long(123232323)
for i in range(len(nodes)):
    distances=[] 
    for j in range(len(nodes[i])):
       #distances=[] 
       if i==0:
          distances=distances+[[nodes[i][j], 0]]
       else:
          distances=distances+[[nodes[i][j],infinity]]
    group_dist=group_dist+[distances]
    #print distances

print "group_distances",group_dist
#print "check",group_dist[0][0][1]

#costs={}
#for i in range(len(lists)):
    #if i==0:
     #   costs[str(lists[i])]=1
    #else:
        # costs[str(lists[i])]=get_selfcost(lists[i])


path=[]
for i in range(len(nodes)):
    mini=[]
    if i!=(len(nodes)-1):

        #temp=long(123234324)
        #Now calculate the cost between the current node and each of its neighbour
        for k in range(len(nodes[(i+1)])):
            for j in range(len(nodes[i])):
                current=nodes[i][j]
                #print "current_node",current
                j_distance=join_cost( current , nodes[i+1][k])
                #t_distance=target_cost( current , nodes[i+1][k])
                t_distance=34
                #print distance
                #print "distance between current and neighbours",distance
                total_distance=(.5*(float(group_dist[i][j][1])+float(j_distance))+.5*(float(t_distance)))
                #print "total distance between the intial_nodes and current neighbour",total_distance
                if int(group_dist[i+1][k][1]) > int(total_distance):
                     group_dist[i+1][k][1]=total_distance
                     #print "updated distance",group_dist[i+1][k][1]
                     a=current
                     #print "the neighbour",nodes[i+1][k],"updated the value",a
            mini=mini+[[str(nodes[i+1][k]),a]]
            print mini

© Stack Overflow or respective owner

Related posts about python

Related posts about optimization