pre - 2.26:
1、将数据类型由string改成了long
2、发现两处bug:1、一个地方val赋值附错了 2、另一个地方只是单纯对val进行++,没有加上实际值。
2.27
9:00——15:00
出现问题Q:
1、3*10反而比以前更慢了
2、graphDistinct反而在增加,edge在不停的增加!!!!
3、reduce Vertex的速度也慢了
4、在mergeVertex中的SubVertex竟然会有2个以上:也就是说,两个vertex属于同一个partation了。
解决的问题:
没发现match冲突了
太奇怪了,其实基本没改什么地方啊!!!
15:30
发现对于只有10v40e的小图来说,竟然没问题,是不是交错代码了 = =
18:41
终于知道是怎么错的了!!!!!!!
C#的string是倒着存的啊!!!!!!
b[0] 是最高位啊!!!!
我想多了啊!!!!!!
没打好基础知识啊!!!!!!!!!!!!!!、
字符串的campare错了啊!!!!!!!!
所以部分的,length相等的数字比较就出问题啊!!!
所以问题出的还不是那么明显啊!!!!!!
我去啊!!!!
感情姐姐我这半个月一直都是这样写的啊!!!!
之前那些能对才怪啊!!!!!!!!!
这么久都没发现啊!!!!!!!!!!!
真是没想到啊!!!!!!!
粗心大意了啊!!!!!!!!!!!!
尼玛啊!!!!!!!!!!!!!!!!
终于解放了啊!!!!!!!!!!!!!
调了这么久了啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
下次一定要注意细节啊!!!!!!!!!!!!!!!!!
2.28
11:20
昨天又重跑了一个3*5和一个3*10的。出现的变化:
1. 3*5用了5小时17分钟,目测3*10在17小时内会跑完。(想多了,也许还要2个多小时)
2. 3*5 通过了我的基本测试
但是有这样的一些问题:
1. 3*10为何不是成比例的增加跑的时间?按说3*10应该是3*5的两倍,为何3倍还有余?
也许是因为一个partition变得很大,所以conflict的边也变得很多,所以处理起来时间会不断增加。时间应该是一个先上升后下降的曲线吧?!
2. 测试了下3*5的reduce效果,发现和之前错误的3*5竟然差距不大。为何?
回忆之前错误的过程:
1. 首先测试3*10的结果,发现match出的边集有互相冲突的(但第一个循环没有冲突,这妥妥的有问题)。
2. 静态调错,却发现了出现了 10-10这样的边,按说不应该有这样自相连的边。后来发现,是有一个c#函数中,对一个边的Val赋值赋错了,导致except的时候,没把match到的边排除出去,才影响了结果。但也不会因为有了10-10这样的边,就会导致match的边集有冲突。仔细检查了所有merge的过程,没在发现别的问题。
3. 后来把2最后改过的又拿去跑,没再仔细分析,但其实之前的问题根本没解决。
4. 后来开会了,mentor让改成long型。于是我改成long了。又跑,错误更加明显了,直接发现有的边属于两个不同的集合。
5. 后来在单机上跑了小图,终于发现了47-62的时候,他会留62而不是47。这样根本理论都错了。原来是string的比较写错了。
分析过去的程序(既然连最基本的函数都写错了。。相当于字符串的大小比较是随机的。。为什么会有以下的问题?):
1. 为何依然能reduce,且和正确的差不多?
2. 为何没有出现一个边属于两个不同集合?
3. 为何时间会那么长?