  Triangle listing is an important topic significant in many practical
applications. Efficient algorithms exist for the task of triangle listing.
Recent algorithms leverage an orientation framework, which can be thought of as
mapping an undirected graph to a directed acylic graph, namely oriented graph,
with respect to any global vertex order. In this paper, we propose an adaptive
orientation technique that satisfies the orientation technique but refines it
by traversing carefully based on the out-degree of the vertices in the oriented
graph during the computation of triangles. Based on this adaptive orientation
technique, we design a new algorithm, namely aot, to enhance the edge-iterator
listing paradigm. We also make improvements to the performance of aot by
exploiting the local order within the adjacent list of the vertices.
  We show that aot is the first work which can achieve best performance in
terms of both practical performance and theoretical time complexity. Our
comprehensive experiments over $16$ real-life large graphs show a superior
performance of our \aot algorithm when compared against the state-of-the-art,
especially for massive graphs with billions of edges. Theoretically, we show
that our proposed algorithm has a time complexity of $\Theta(\sum_{ \langle u,v
\rangle \in \vec{E} } \min\{ deg^{+}(u),deg^{+}(v)\}))$, where $\vec{E}$ and
$deg^{+}(x)$ denote the set of directed edges in an oriented graph and the
out-degree of vertex $x$ respectively. As to our best knowledge, this is the
best time complexity among in-memory triangle listing algorithms.
