<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-012-07-0764</article-id>
      <article-id pub-id-type="publisher-id">28631</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>C.4 - PERFORMANCE OF SYSTEMS</subject>
          <subject>D.3.4 - Processors</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>The Design of the YAP Compiler: An Optimizing Compiler for Logic Programming Languages</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Silva</surname>
            <given-names>Anderson Faustino da</given-names>
          </name>
          <email xlink:type="simple">faustino@cos.ufrj.br</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Costa</surname>
            <given-names>Vitor Santos</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Federal University of Rio de Janeiro, , Brazil</addr-line>
        <institution>Federal University of Rio de Janeiro</institution>
        <country>Brazil</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Anderson Faustino da Silva (<email xlink:type="simple">faustino@cos.ufrj.br</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2006</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>07</month>
        <year>2006</year>
      </pub-date>
      <volume>12</volume>
      <issue>7</issue>
      <fpage>764</fpage>
      <lpage>787</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/24EAFF1D-AD88-5EAD-BB1C-7A8A6F3049AF">24EAFF1D-AD88-5EAD-BB1C-7A8A6F3049AF</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/6997048">6997048</uri>
      <permissions>
        <copyright-statement>Anderson Faustino da Silva, Vitor Santos Costa</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>Several techniques for implementing Prolog in a efficient manner have been devised since the original interpreter, many of them aimed at achieving more speed. There are two main approaches to efficient Prolog implementation: (1) compilers to bytecode and then interpreting it (emulators) or (2) compilers to native code. Emulators have smaller load/compilation time and are a good solution for their simplicity when speed is not a priority. Compilers are more complex than emulators, and the difference is much more acute if some form of code analysis is performed as part of the compilation, which impacts development time. Generation of low level code promises faster programs at the expense of using more resources during the compilation phase. In our work besides using an mixed execution mode, we design an optimizing compiler that using type feedback profiling, dynamic compilation and dynamic deoptimization for improving the performance of logic programming languages.</p>
      </abstract>
    </article-meta>
  </front>
</article>
