询问程序的运行时间

时间:2013-10-21 04:57:08

标签: ocaml coq

我编写了一个解析器程序(用OCaml编写),它输入的是一个xsd然后生成它到Coq文件。但是在终端中生成需要花费很多时间(〜:0m.0152s)。我想知道一些能够让普拉瑟跑得更快的建议吗?例如,使程序变慢的原因是什么?这是我第一次遇到这个运行时问题。我对此有任何建议/经验非常感激吗?

非常感谢

编辑: 我可以尝试通过主文件解释:

open Libxml;; (*it is the library for xml file*)
open Error;; (* it is for the error message*)

let main () =     
  let xml = parse_xml stdin in
  let xsds = Xsd_of_xml.xsd_of_xml xml in (* It is a parsing from xml to xsds *)
  let b = Buffer.create 10000 in

  Coq_of_xsd.genr_coq b xsds; (* It is a parsing from xsds to Coq type *)
  Buffer.output_buffer stdout b;;

let _ = run main;;

我这样写Makefile.xsd2coq

MAIN := xsd2coq

FILES := util error libxml xsd scc xsd_of_xml coqxsd_matrix coqxsd_print coq_of_xsd

FRAGILE_FILES := xsd coqxsd_matrix coqxsd_print coq_of_xsd

LIBS := xml-light/xml-light

INCLUDES := -I xml-light

coq_of_xsd.cmo coq_of_xsd.cmx libxml.cmo libxml.cmx: WARNINGS = -warn-error Aezk

include Makefile.ocaml

在主要内容中:Makefile

xsd2coq: FORCE
    $(MAKE) -f Makefile.xsd2coq depend
    $(MAKE) -f Makefile.xsd2coq

1 个答案:

答案 0 :(得分:2)

当我测试我的解析器 - 组合器时,我正在使用that。我已经看到70%的时间用于阻止分配。也许探查器输出可以帮助您找到类似的问题。