1. An optimization method for converting source code for a program written in a programming language into machine language and for optimizing said program, said method comprising: employing a basic block as a unit to estimate an execution time for said program to be processed; generating a nested tree that represents connections of said basic blocks using a nesting structure; when a conditional branch is accompanied by a node in said nested tree, employing said execution time estimated by using said basic blocks as units to obtain an execution time at said node of said program when a conditional branching portion of a program is directly executed and when said conditional branching portion is executed in parallel; and defining said node as a parallel execution area group when, as a result of an estimate, said execution time required for parallel execution is shorter, or dividing multiple child nodes of said nodes into multiple parallel execution areas when said execution time for the conditional branching portion is shorter.