  The tremendous advancements in the Internet of Things (IoT) increasingly
involve computationally intensive services. These services often require more
computation resources than can entirely be satisfied on local IoT devices.
Cloud computing is traditionally used to provide unlimited computation
resources at distant servers. However, such remote computation may not address
the short-delay constraints that many of today's IoT applications require. Edge
computing allows offloading computing close to end users to overcome
computation and delay issues. Nonetheless, the edge servers may suffer from
computing inefficiencies. Indeed, some IoT applications are invoked multiple
times by multiple devices. These invocations are often used with the same or
similar input data, which leads to the same computational output (results).
Still, the edge server willfully executes all received redundant tasks. In this
work, we investigate the use of the computation reuse concept at the edge
server. We design a network-based computation reuse architecture for IoT
applications. The architecture stores previously executed results and reuses
them to satisfy newly arrived similar tasks instead of performing computation
from scratch. By doing so, we eliminate redundant computation, optimize
resource utilization, and decrease task completion time. We implemented the
architecture and evaluated its performance both at the networking and
application levels. From the networking perspective, we reach up to an 80\%
reduction in task completion time and up to 60\% reduction in resource
utilization. From the application perspective, we achieve up to 90\%
computation correctness and accuracy.
