<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>AOBA: An Online Benchmark tool for Algorithms in stringology</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ryu Wakimoto</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Satoshi Kobayashi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yuki Igarashi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davaajav Jargalsaikhan</string-name>
          <email>jargalsaikhang@shino.ecei.tohoku.ac.jp</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Diptarama Hendrian</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ryo Yoshinaka</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ayumi Shinohara</string-name>
          <email>ayumisg@tohoku.ac.jp</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Graduate School of Information Sciences, Tohoku University</institution>
          ,
          <country country="JP">Japan</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Experimental performance of an algorithm often has a big gap from its theoretical complexity analysis. It is necessary to understand the characteristics of the experimental performances of di erent algorithms for the same problem to select an appropriate algorithm depending on available computing resources and properties of input data. In this paper, we present AOBA, an integrated online platform for testing, evaluating, analyzing and comparing di erent algorithms for various types of string processing problems. New algorithms can be submitted to AOBA and will be evaluated with many test data. All experiments work on the web: everyone can use AOBA without any local environment for experiments. AOBA also includes a powerful in-browser visualizer for analyzing and comparing performances of algorithms.</p>
      </abstract>
      <kwd-group>
        <kwd>string processing</kwd>
        <kwd>experimental evaluation</kwd>
        <kwd>online evaluation tool</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>String processing is one of the most important research elds in computer
science. Various kinds of data including natural language sentences, biological
sequences, and other types of sequences of symbols are strings in nature. Even
numerical sequences can be seen as strings and moreover any kinds of data
handled by a computer are represented as strings of bits in the end. So e cient
string processing algorithms and their implementations can make a huge impact
on the wide range of applications. It is important to understand and evaluate
the performances of string processing algorithms fairly and correctly.</p>
      <p>
        It is common for theoretical and experimental evaluations of an algorithm
to diverge. For instance, Cantone and Faro [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] proposed two algorithms,
QuiteNaive and Tailed-Substring, that solve the exact matching problem with constant
space. The time complexities of these algorithms are same as the naive one, but
they experimentally run much faster. Also, the Knuth-Morris-Pratt (KMP)
algorithm [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is well known as an algorithm that has a truly smaller time complexity
than the naive one, but the KMP algorithm works slower in practice.
      </p>
      <p>
        In this regard, several performance evaluation tools have been developed so
far. Hume and Sunday [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] presented a testing framework for algorithms that
solve the exact matching problem. The goal of the exact matching problem is
to nd all occurrences of a given pattern string inside a given text. Faro et
al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] presented Smart1, which is designed for developing, testing, comparing
and evaluating exact matching algorithms. It contains implementations of 86
algorithms by C programming language and a wide corpus of 12 texts, including
natural language texts, genome sequences, protein sequences, and random texts.
A lot of known algorithms can be tested and compared with these texts and
implementations. A new algorithm can also be added to experiment easily. Results
of experiments can be output in various formats. Smart also provides a
graphical user interface (SmartGUI). It allows to run experiments and show real-time
report of the experiments. These tools [
        <xref ref-type="bibr" rid="ref5 ref8">5, 8</xref>
        ] are among the most widely used
testing frameworks. However, they are exclusive to exact matching algorithms
only. In addition, local environments are needed to use them.
      </p>
      <p>In this paper, we introduce AOBA (An Online Benchmark tool for Algorithms
in stringology), an integrated platform on the web for testing and evaluating
string processing algorithms. AOBA is not limited to the exact matching
problem. It can handle various types of string processing problems including pattern
matching, pattern mining, string compression, and so on. In the abstract, it can
handle problems that have a unique solution text for an input text.</p>
      <p>This paper is organized as follows. In Section 2, we give a brief description of
AOBA. In Section 3, we describe the backend in detail and discuss its security.
In Section 4, we provide experimental results on selected algorithms evaluated
with AOBA. Finally, in Section 5, we summarize our work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>AOBA in Short</title>
      <p>AOBA is an integrated web platform for string processing algorithms. Without
any local environments, users can easily test their algorithms and compare their
performance with other algorithms submitted to AOBA. AOBA is available at
http://aoba.iss.is.tohoku.ac.jp. A demonstration video is also available at
https://youtu.be/d1Z5-LBLLJI. Below are the key features of AOBA:
{ complete support on the web, no need for a local environment;
{ compatibility with various types of string processing problems;
{ integrated datasets and evaluation environments;
{ support for adding new problems and datasets through user requests;
{ fair and secure evaluation by a sandbox environment;
{ powerful visualizer for comparing performances of di erent algorithms.</p>
      <sec id="sec-2-1">
        <title>1 https://smart-tool.github.io/smart/</title>
        <p>In order to test and evaluate their algorithm implementations on AOBA,
users should make a submission. A submission should contain source les and
build/run scripts that instruct the system how to compile the source les and run
the program. Each submission should target only one problem (for instance, the
exact matching problem). Each problem has multiple test cases, each consisting
of two text les: the input and the expected output.</p>
        <p>Once a submission has been made, AOBA compiles the source les
according to the build script. After that, AOBA runs the program on the input text
and compares the actual output from the program with the expected output for
all test cases. The execution time and the maximum memory usage are
measured during the execution. We call these measurement results the performance
of the algorithm. Detailed descriptions of the evaluation ow will be given in
Section 2.1. All compilations and executions are done in a sandbox environment
whose speci cations are de ned for each problem.</p>
        <p>We have also implemented an in-browser visualizer to analyze performances
of algorithms. The performance of the submission is plotted immediately after
execution. Detailed descriptions of the visualizer will be given in Section 2.2.
Users can also request to add new problems and test cases to AOBA. Currently,
approval from administrators is needed to publish a new problem.
2.1</p>
        <sec id="sec-2-1-1">
          <title>Submitting an Algorithm</title>
          <p>This section describes the work ow of an algorithm testing and evaluation in
AOBA. A submission is processed in two steps, pre-evaluation and evaluation.
In both steps, the submitted source code will be compiled with the build script.
Then, the input data text is fed into the algorithm through the standard input.
The compiled code is executed with the run script, and the actual output is
veri ed for correctness by comparing with the expected output.</p>
          <p>When the submission is made, it is immediately proceeded to the pre-evaluation
step. The pre-evaluation step veri es the correctness of the submission by
running it on a small number of test cases. If any error is found in this step, the
submission is disallowed to proceed to the next step. Once the pre-evaluation
has successfully completed, the submission can proceed to the evaluation step
upon the user's request.</p>
          <p>The evaluation step measures the performance, i.e., execution time and max
memory usage, of the submission by running the program on test cases. Each
test case used in the evaluation step has metadata representing characteristics
of the test case in addition to the input and the output texts. The number
of parameters constituting the metadata, the semantics and the type of each
parameter are de ned for each problem. For example, a test case of the exact
matching problem has three integer parameters: text length n, pattern length m
and alphabet size . At any time during the evaluation step, one can check the
evaluation progress and the evaluation results with the visualizer.</p>
          <p>Note that we have set some limitations on the number of executions on each
step to provide our computational resources equally for every user.
2.2</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>The Performance Visualizer</title>
          <p>The evaluation result is given as multi-dimensional data corresponding to the
multiple parameters associated with test cases. AOBA is equipped with an
inbrowser visualizer that helps understanding the intricate result. By aggregating
some axes, it shows the result in a 2D or 3D plot image, depending on the user's
preference. Figure 1 shows a screenshot of the visualizer interface, which consists
of the setting area and the plot area. The setting area holds settings about axes
and their parameters. This visualizer is reactive: the plot is updated immediately
whenever any changes to the settings are made.</p>
          <p>
            The visualizer can simultaneously plot evaluation results from di erent
submissions for the same problem. Figure 1 compares the performance of the
Horspool algorithm [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] (HOR) against those of the Boyer-Moore [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ] (BM) and
ShiftAnd [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ] (SA) algorithms for the exact string matching problem. One can observe
that the execution time of HOR is short on long patterns over large alphabets
similarly to BM. In contrast, that of SA has little dependency on those
parameters. AOBA also provides a heat map plot for the submissions. A heat map plot
focuses on the distribution of algorithms that have the fastest execution time or
most e cient memory usage. Figure 3 shows an example of a heat map plot.
          </p>
          <p>The visualizer is available on both of the submission page and the problem
page in the web site. The one on the submission page shows the performance of
that speci c submission. On the problem page, it shows the best performances
of submissions that have the fastest execution time or the most e cient memory
usage, among all submissions for the problem.
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Backend for Fair and Secure Execution</title>
      <p>AOBA needs to safely execute untrusted source codes submitted by users. At the
same time, measured performances must be accurate. In this section, we describe
the secure execution environment called sandbox and the accurate performance
measurement method to realize it. We also discuss security based on possible
attacks. Finally, we describe the whole system architecture.
3.1</p>
      <sec id="sec-3-1">
        <title>A sandbox environment</title>
        <p>A sandbox is an evaluation environment for safe program execution. Sandbox
environments have widely been studied in the computer security eld. Existing
sandboxes are mainly realized by the following methods [15{17], among which
AOBA uses the container-based method.</p>
        <p>Container-based The Linux kernel provides features for grouping processes
together and allocating computational resources for each group. The one
called namespace allocates operating-system-level resources, like process ID,
interprocess communication, network, le system processes. On the other
hand, cgroups restricts the physical resources that can be handled by the
process in the group such as CPU and memory. Processes can be abstracted
from the environment in which they actually run. This type of abstraction
method is called a container. Containers are much lighter and faster than
virtual machines, since containers virtualize at the operating system level,
unlike the virtual machines that virtualize hardware-level resources.
ptrace-based A system call ptrace is used for monitoring and controlling
resources consumed by running processes. By using this in conjunction with
setrlimit and seccomp system calls, an untrusted source code can be
executed on limited resources.</p>
        <p>LSM-based Linux Security Modules (LSM) is a framework that enables the
many di erent access control models to be implemented as loadable kernel
modules. Since it is loaded into the kernel and the processes are controlled
from the kernel, the overhead is less than that of ptrace.</p>
        <p>
          In addition to security, it is also important not to interfere with the
performance of the process, so that the original execution time is measured as
accurately as possible. Merry and Bruce [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] pointed out the ptrace-based methods
had huge overhead in the case of frequent I/O calls and interprocess
communication. While the LSM-based methods have less overhead than the ptrace-based
method, they have high development cost, because they require to build a kernel
module and hooking it properly to the kernel. On the other hand, as mentioned
above, container-based methods are relatively easy to build. Moreover, containers
operate extremely fast, since they are largely realized using functions supported
by the kernel space.
        </p>
        <p>
          In fact, Mares and Blackham [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] revealed that the performance of the
container-based method is as good as the performance of the LSM-based
methods. From the facts above, AOBA uses the container-based method for
implementing such environments. Speci cally, AOBA uses Docker2 for building the
container-based sandbox environment. Docker is open-source software that
provides secure and light-weight containers. Containers are created from images that
specify their precise contents. Furthermore, the initial state of the le system
provided by Docker can be set by specifying a de nition le called Docker le.
This allows us to manage compilers and libraries to be used.
        </p>
        <p>To provide secure and fast IO access AOBA creates a tmpfs volume and
mounts it to the Docker container. Since tmpfs is stored in the main memory
instead of the hard disk, it ensures fast access to the data. When there is not
enough space for the tmpfs volume in the main memory, the data access time
will be slow. As a workaround, AOBA allocates memory needed for the container
data before the execution, assuming the total size of data does not exceed the
total main memory size.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Accurate Measurement</title>
        <p>A measured performance may di er from the ideal value by mainly two factors:
an error due to the unstable measurement and a malicious program that attempts</p>
        <sec id="sec-3-2-1">
          <title>2 https://www.docker.com/</title>
          <p>to rewrite the measurement result. In this section, we give a detailed description
of measuring execution time and memory usage on AOBA to prevent unstable
measurement. We discuss its security in Section 3.3.</p>
          <p>Measure execution time While measuring it outside a container is the safest
way, a measured result contains time required for the API calls between the
internal system and a container. This overhead may cause unstable results.
In fact, we con rmed that an error of up to 200ms occurs on our
environment. Instead, AOBA measures execution time directly inside a container by
the time command. This method improves the accuracy but has a greater
security risk. We will explain how to deal with it in Section 3.3.
Measure memory usage Generally, memory usage of a single process can be
measured by the ps command and so on. However, this method cannot
be used because AOBA allows multi-processing. Therefore, memory usage is
measured by total memory usage over a whole container for multi-processing.
More speci cally, its value equals to max usage in bytes in the memory
subsystem of cgroups. The value measured by this method contains extra
memory usage due to other processes such as time command. However, this error
is constant and negligibly small for su ciently large problems.</p>
          <p>These measurement methods realize accurate measurement. Nevertheless,
outliers may be measured depending on system conditions, so a measurement
for a test case is repeated. Under the current setting, the program is repeatedly
run three times. Among the runs, the one with the fastest execution time is
reported as the nal result.
3.3</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>Possible Attacks</title>
        <p>
          Various kinds of attacks to the system are possible in both of program
compilation and execution. Tochev and Bogdanov [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] provided a comprehensive
description of possible attacks on judge systems. Attacks that they pointed out
can be classi ed into the following three types.
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>Embedding answers into the program The simplest attack is embedding</title>
        <p>all possible answers to a source code. This can be prevented by preparing a
su ciently complex problem and limiting the submission le size. A more
aggressive attack is possible: embedding test cases that are obtained illegally.</p>
        <p>Therefore, it is needed to ensure test cases are inaccessible from users.</p>
      </sec>
      <sec id="sec-3-5">
        <title>Putting a heavy load on the system to make it unstable Submitting ex</title>
        <p>cessive le, Denial of Service (DoS) attacks during compilation and
execution, excessive disk/memory usage, etc. fall under this type. Attacks of this
type can be prevented by limiting available resources such as disk/memory
usage and execution time.</p>
      </sec>
      <sec id="sec-3-6">
        <title>Access something that should not be accessed Accessing forbidden les</title>
        <p>such as the answer of a test case is one of this type of attacks. As a more
critical example, it is possible to break a sandbox environment. The security
of containers and permissions should be maintained properly because most
of these attacks depend on their vulnerabilities.</p>
        <p>To protect AOBA from these types of attacks, we limit memory/disk usage,
submission size, compilation/execution time, and access rights.</p>
        <p>In addition to the above, various attacks can be considered because AOBA
also allows multi-threading and multi-processing. For example, a process that
remains running after its parent process has nished, called an orphan process,
may cause some attacks that break a sandbox. A fork bomb attack is also possible.
It is a DoS attack that creates processes in nitely to slow down the system. Each
container has a process id space provided by namespace. A container kills all
remaining processes in this space when it terminates. It ensures orphan processes
in a container cannot break it. Available resources from a container are limited
by cgroups, thus DoS attacks due to multi-processing like a fork bomb do not
a ect the entire system.</p>
        <p>Moreover, attacks that rewrite the performance fraudulently should be
considered because AOBA attaches importance to the reliability of measured
performances. Memory usage is measured outside and throughout a container, so
its value reliable as long as the security of containers is maintained.</p>
        <p>A measurement of an execution time has more security threats compared to
that of memory usage because it is done in a directory inside the container. For
example, it is a possible attack that the main process of a submitted program
creates an orphan process and terminates itself immediately to make its
execution time less. After that, an orphan process calculates and outputs an answer. A
more aggressive attack kills the process of the time command during the
execution and writes fake output to tamper with execution time. To protect from such
attacks, the time command for the measurement is executed by the root user,
then the user is switched to a general user called the guest user that executes a
submitted program. This method ensures that it cannot disturb a process of the
time command. Outputs from the time command and a submitted program are
redirected to speci c les in a container by the root user. The guest user for the
execution has no access rights to these les. Therefore, orphan processes cannot
overwrite such outputs. Only a process whose execution time is measured by the
time command can write outputs. In this way, the security of an execution time
measurement is guaranteed.
3.4</p>
      </sec>
      <sec id="sec-3-7">
        <title>System Architecture</title>
        <p>The whole system of AOBA consists of the following ve components.
Web provides an interface that allows users to interact with AOBA.
Web-Internal dispatches jobs related to a submission to appropriate
components, manages and checks the status of other components.</p>
        <p>Database stores data used in Web and Web-Internal.</p>
        <p>Storage stores large les such as submitted source les and test cases.
Executor executes and evaluates submitted les in a sandbox environment.
AOBA evaluates submissions as follows. Web component receives submissions
via the web, then Web-Internal component creates a job for each submission
DatabasSetorage</p>
        <p>Executor
Pull the job from the job</p>
        <p>queue
Fetch the submitted
files and test cases
Build and execute for a</p>
        <p>test case
Save the execution log</p>
        <p>to Storage
Evaluate the output and
report the result</p>
        <p>Repeat for
all test cases
Report the completion</p>
        <p>of the job
W
eb
Receive a submission
Save the submitted files</p>
        <p>to Storage
Add a submission entry</p>
        <p>to Database</p>
        <p>Repeat these steps
twice for pre-evaluation
and evaluation.</p>
        <p>Create and add a job to</p>
        <p>the job queue</p>
        <p>Add the evaluation
result entry to Database
Add the job result entry
to Database
Build the docker image
Create a /data volume</p>
        <p>with tmpfs</p>
        <p>Create a container
Mount the /data volume
to the container
Start the container
Execute the build.sh</p>
        <p>Stop a container
Copy an input file to</p>
        <p>/data/INPUT</p>
        <p>Start the container
Execute the run.sh with
following redirections and
measuring execution time.</p>
        <p>/data/INPUT → stdin
stdout → /data/OUTPUT</p>
        <p>Stop a container
Fetch /data/OUTPUT
Measure memory usage
Delete a container and</p>
        <p>volumes
: an operation in a container
and pushes it to the job queue for the pre-evaluation step. A job is an execution
unit of the Executor; the collection of information necessary for evaluating the
submission such as the ID of a submission and test cases. Then the Executor
pulls the job from the job queue and evaluates it. If the submission passes the
pre-evaluation, Web-Internal component creates another job for the evaluation
step. The Executor evaluates it as well as the pre-evaluation step. Figure 2 shows
the detailed evaluation ow.</p>
        <p>All of these components except Web-Internal can be distributed to multiple
hosts. Moreover, the Executor components are not hosted on the same machine
with the other components for measurement stability.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Demonstrations</title>
      <p>In this section, we show experimental results about several string problems as
examples to demonstrate testing and analyzing algorithms in AOBA. In all
experiments, an executor is hosted in a PC with Xeon E3-1220 V2, Ubuntu 18.04,
Docker 18.09.0, 8GB RAM. In the sandbox, available resources are limited to 1
physical core, 1GB RAM.</p>
      <p>
        First, we show evaluation results for the exact matching problem on AOBA
to demonstrate examining the performance distribution of many algorithms. The
exact string matching consists in nding all occurrences of a given pattern string
P in a given string T . A lot of exact matching algorithms are researched and
proposed [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We evaluated twenty algorithms shown in Table 1. All
implementations are migrated from Smart [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]3. In this experiment, a text T with
symbols was generated randomly and the pattern P was picked randomly from
T for = 2; 4; 8; 16; 32; 64; 96. The lengths of the text and pattern are n = 106
and m = 2; 4; 8; 16; 32; 64; 128; 256; 512; 1024, respectively.
      </p>
      <p>Figure 3 is the heat map plot of the visualizer that shows the distribution
of algorithms that has the fastest execution time against parameters m and
. Based on the obtained knowledge of the properties of algorithms, the most
suitable algorithm can be selected for a target application.</p>
      <p>
        Another problem that AOBA is equipped with is the order preserving pattern
matching problem (OPPM) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Smart does not have the functionality to test
this problem. OPPM considers relative order of elements in numerical strings.
For example, (5; 3; 8) is order-isomorphic to (4; 1; 12), since the second element
is the smallest and the last element is the largest. On the other hand, (5; 3; 8)
is not order-isomorphic to (8; 2; 6), where the relative orders of the rst and the
3 http://www.dmi.unict.it/~faro/smart/algorithms.php
last elements are reversed in those two strings. OPPM consists in nding all the
substrings of an input text T which are order-isomorphic to an input pattern P .
      </p>
      <p>
        We let AOBA compare the KMP-based algorithm (OP-KMP) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and the
duel-and-sweep based algorithm (OP-DS) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] for OPPM. Figure 4 shows the
execution time comparison of the algorithms against pattern length m and alphabet
size by a 3D plot. These algorithms have almost the same linear dependency
on the alphabet size , but it shows di erent dependency on the pattern length
m. The 2D plot in Figure 5 focuses on the execution time dependency on m,
where the alphabet size is xed ( = 256). OP-DS is the algorithm based on
pruning pattern positions. The authors for OP-DS claim that it makes fewer
comparisons between the pattern and the text than OP-KMP. Actually, OP-DS
works slightly faster than OP-KMP in large pattern length (m 8). In contrast,
for small pattern length (m 4), OP-KMP works much faster. It implies the
pruning in OP-DS does not work well in such a situation.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Concluding Remarks</title>
      <p>
        We introduced an integrated evaluation web platform AOBA designed for
testing and analyzing the performance of algorithms for diverse types of string
processing problems. We are expecting that the platform will help researchers to
study e cient algorithms and implementations. In fact, some of the authors,
Kobayashi et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], have recently succeeded in discovering faster variants of
the FJS algorithm [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] in the process of developing AOBA.
      </p>
      <p>Still, the datasets and problems that currently AOBA provides may not be
su ciently many. We will continue enhancing AOBA, while users' contributions
are very much welcome. We are also considering releasing an on-premise version.</p>
      <p>A whole execution of an evaluation takes much time as the number of test
cases increases. In addition, AOBA reports an algorithm's performance based on
many multiple runs to make results more accurate but it also takes time.
Currently, AOBA has an insu cient number of executor components. Some problems
take several hours to evaluate a single submission. This can be solved by scaling
executor components. However, more strategic solutions can also be considered.
For instance, the performance may be approximated by using some test cases
instead of all of them.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Baeza-Yates</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gonnet</surname>
          </string-name>
          , G.:
          <article-title>A new approach to text searching</article-title>
          .
          <source>ACM SIGIR Forum</source>
          <volume>23</volume>
          ,
          <issue>168</issue>
          {
          <fpage>175</fpage>
          (
          <year>1988</year>
          ). https://doi.org/10.1145/75335.75352
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Boyer</surname>
            ,
            <given-names>R.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moore</surname>
            ,
            <given-names>J.S.:</given-names>
          </string-name>
          <article-title>A fast string searching algorithm</article-title>
          .
          <source>Communications of the ACM</source>
          <volume>20</volume>
          (
          <issue>10</issue>
          ),
          <volume>762</volume>
          {
          <fpage>772</fpage>
          (
          <year>1977</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Cantone</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faro</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Searching for a substring with constant extra-space complexity</article-title>
          .
          <source>In: Third International Conference on Fun with algorithms</source>
          . pp.
          <volume>118</volume>
          {
          <issue>131</issue>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Faro</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lecroq</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>The exact online string matching problem: A review of the most recent results</article-title>
          .
          <source>ACM Computing Surveys</source>
          <volume>45</volume>
          (
          <issue>2</issue>
          ),
          <volume>13</volume>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Faro</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lecroq</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borzi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , di Mauro,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Maggio</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>The string matching algorithms research tool</article-title>
          .
          <source>In: Proceedings of the Prague Stringology Conference</source>
          <year>2016</year>
          . pp.
          <volume>99</volume>
          {
          <issue>111</issue>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Franek</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jennings</surname>
            ,
            <given-names>C.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smyth</surname>
            ,
            <given-names>W.F.</given-names>
          </string-name>
          :
          <article-title>A simple fast hybrid pattern-matching algorithm</article-title>
          .
          <source>Journal of Discrete Algorithms</source>
          <volume>5</volume>
          (
          <issue>4</issue>
          ),
          <volume>682</volume>
          {
          <fpage>695</fpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Horspool</surname>
            ,
            <given-names>R.N.</given-names>
          </string-name>
          :
          <article-title>Practical fast searching in strings</article-title>
          .
          <source>Software: Practice and Experience</source>
          <volume>10</volume>
          (
          <issue>6</issue>
          ),
          <volume>501</volume>
          {
          <fpage>506</fpage>
          (
          <year>1980</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Hume</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sunday</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Fast string searching</article-title>
          .
          <source>Software: Practice and Experience</source>
          <volume>21</volume>
          (
          <issue>11</issue>
          ),
          <volume>1221</volume>
          {
          <fpage>1248</fpage>
          (
          <year>1991</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Jargalsaikhan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ueki</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yoshinaka</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shinohara</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>Duel and sweep algorithm for order-preserving pattern matching</article-title>
          .
          <source>In: International Conference on Current Trends in Theory and Practice of Informatics</source>
          . pp.
          <volume>624</volume>
          {
          <fpage>635</fpage>
          . Springer (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eades</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fleischer</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hong</surname>
            ,
            <given-names>S.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iliopoulos</surname>
            ,
            <given-names>C.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Park</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puglisi</surname>
            ,
            <given-names>S.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tokuyama</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Order-preserving matching</article-title>
          .
          <source>Theoretical Computer Science</source>
          <volume>525</volume>
          ,
          <issue>68</issue>
          {
          <fpage>79</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Knuth</surname>
            ,
            <given-names>D.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morris</surname>
            ,
            <given-names>J.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pratt</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          :
          <article-title>Fast pattern matching in strings</article-title>
          .
          <source>SIAM journal on computing 6(2)</source>
          ,
          <volume>323</volume>
          {
          <fpage>350</fpage>
          (
          <year>1977</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kobayashi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hendrian</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yoshinaka</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shinohara</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>An improvement of the Franek-Jennings-Smyth pattern matching algorithm</article-title>
          .
          <source>In: Proceedings of the Prague Stringology Conference</source>
          <year>2019</year>
          . pp.
          <volume>56</volume>
          {
          <issue>68</issue>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Mares</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blackham</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>A new contest sandbox</article-title>
          .
          <source>Olympiads in Informatics 6</source>
          ,
          <issue>100</issue>
          {
          <fpage>109</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Merry</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Performance analysis of sandboxes for reactive tasks</article-title>
          .
          <source>Olympiads in Informatics 4</source>
          ,
          <issue>87</issue>
          {
          <fpage>94</fpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Tochev</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bogdanov</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Validating the security and stability of the grader for a programming contest system</article-title>
          .
          <source>Olympiads in Informatics 4</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Wasik</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antczak</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laskowski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sternal</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , et al.:
          <article-title>A survey on online judge systems and their applications</article-title>
          .
          <source>ACM Computing Surveys</source>
          <volume>51</volume>
          (
          <issue>3</issue>
          ),
          <volume>1</volume>
          {
          <fpage>34</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Yi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feng</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gong</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          :
          <article-title>A comparison of sandbox technologies used in online judge systems</article-title>
          .
          <source>In: Applied Mechanics and Materials</source>
          . vol.
          <volume>490</volume>
          , pp.
          <volume>1201</volume>
          {
          <issue>1204</issue>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>