第一次个人编程作业

作业属于的课程 计科22级12班
作业要求 要求
作业目标 体会完成论文查重的个人项目,了解PSP表格

GitHub链接:链接

一、PSP表格

PSP2.1 描述 预估耗时(分钟) 实际耗时(分钟)
Planning
· Estimate 估计这个任务需要多少时间 60 60
Development
· Analysis 需求分析 (包括学习新技术) 120 180
· Design Spec 生成设计文档 60 60
· Design Review 设计复审 30 30
· Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 30
· Design 具体设计 120 180
· Coding 具体编码 600 660
· Code Review 代码复审 60 30
· Test 测试(自我测试,修改代码,提交修改) 60 60
Reporting
· Test Report 测试报告 120 90
· Size Measurement 计算工作量 10 10
· Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
合计 1240 1420

二、具体实现

2.1实现原理

基于simhash算法和海明距离来实现判断文本的相似程度。
算法具体参考链接

2.2项目结构

2.3模块接口的设计和实现

主类:
mainpapercheck:使用自定义编写的模块,实现程序的具体目标。
模块:
hammingutil:通过得到的simhash值,计算海明距离。
simhash:获取字符串的simhash值。
ShortStringException:一个自定义异常类,用于在特定条件下抛出和捕获异常。
txtio:实现文件的读取和写入。

2.4主要流程

mainpapercheck根据输入文件的路径,使用txtio模块将文本内容转变为字符串类型,再通过simhash模块将字符串的simhash值计算出来,通过hammingutil模块计算出汉明距离后根据算法判断汉明距离,而ShortStringException模块负责在特定条件下抛出和捕获异常。

三、性能分析

3.1改进思路

  • simhash模块:
    使用高效的哈希算法来减少计算时间。
    考虑将计算过程并行化,特别是在处理大型文本时。

  • hammingutil模块:
    如果需要计算大量汉明距离,可以使用更优化的算法,如位运算加速。
    对于大规模数据,考虑使用矩阵计算库来提高性能。

  • txtio模块:
    使用缓冲区或内存映射文件来加速文件读取和写入操作。
    采用异步IO以提高处理大文件时的效率。

  • ShortStringException:
    确保异常处理逻辑尽可能高效,以避免不必要的性能开销。
    如果异常处理影响性能,考虑优化异常捕获策略,减少不必要的异常抛出。
    优化时,确保对模块进行性能测试,找出瓶颈并针对性改进。

3.2Jprofiler截图

  • 性能分析图
  • 消耗最大函数

四、单元测试

4.1函数设计

  • getHammingDistanceTest():
    目标:验证 getHammingDistance 函数的正确性。
    步骤:从两个文件读取文本 (orig.txt 和 orig_0.8_add.txt)。计算这两个文本的 SimHash 值。计算两个 SimHash 值的汉明距离。输出汉明距离和相似度百分比。

  • shortStringExceptionTest():
    目标:测试 getSimHash 对短字符串的处理。
    步骤:使用短字符串 “一位真正的作家” 调用 getSimHash。输出计算得到的 SimHash 值。

  • getHashTest():
    目标:验证 getHash 函数的输出。
    步骤:对一组字符串 (“与”, “世上”, “众人”, “的”, “路径”, “相反”) 调用 getHash。输出每个字符串的哈希值及其长度。

  • readTxtTest():
    目标:测试 readTxt 函数的正确性。
    步骤:从文件 (orig.txt) 读取文本。将读取的文本按空格拆分成字符串数组。输出数组中的每个字符串。

测试覆盖率截图

五、异常处理

  • 测试写入到一个不存在的目录
    该测试用例尝试将数据写入一个不存在的目录,以确保 writeTxt 方法能正确处理目录不存在的异常情况。

  • testShortStringException() 方法测试字符串长度小于 200 的情况,应该返回 null

posted @ 2024-09-14 20:34  vavcvy  阅读(15)  评论(0编辑  收藏  举报