Will multi threading provide any performance boost?

Eu sou novo em programação em geral, então, por favor, tenha isso em mente quando responder a minha pergunta.

Eu tenho um programa que leva um grande array 3D (1 bilhão de elementos) e soma elementos ao longo dos vários eixos para produzir um array 2D de uma projeção de cada lado dos dados. O problema aqui é que ele é muito intenso, pois o programa está constantemente buscando informações do RAM, tanto lendo quanto escrevendo.

A questão é, vou ganhar algum desempenho aumenta se eu multithread o programa ou vou acabar correndo em um gargalo de acesso RAM? Quando eu digo multithreading, eu só quero dizer multithreading para 2 ou 4 núcleos, não mais.

Se isso ajudar, a configuração atual do meu computador é 2.4ghz core2 quad, 1033 fsb, 4gb ram a 667mhz.

Desde já, obrigado,

-Faken

Editar:

Parece-me que as pessoas aqui estão muito mais interessadas nessa questão que eu esperava. Vou expandir a questão e postar algum código para quem estiver interessado.

Primeiro de tudo, um pouco de fundo para você entender de onde eu venho. Eu sou um estudante de pós-graduação em engenharia mecânica que, de alguma forma, conseguiu escolher um tópico que praticamente não tinha nada a ver com engenharia mecânica. Fiz 1 curso de java introdutório (forçado) há aproximadamente 5 anos e nunca toquei em programação até cerca de um mês atrás, quando comecei minha tese a sério. Eu também tomei (novamente forçado, ainda não sei por que) um curso de eletrônica e engenharia da computação, lidamos com micro-controladores (8 bits), seu funcionamento interno e algum código ASM para eles. Fora isso, não sei quase nada sobre programação.

Aqui está o código:

int dim = 1000;
int steps = 7 //ranges from 1 to  255

for (int stage = 1; stage < steps; stage++)
for (int j = 0; j < dim; j++)
    for (int i = 0; i < dim; i++)
    {
        sum = 0;
        for (int k = 0; k < dim; k++)
            if (partMap[(((i * dim) + k) * dim) + j] >= stage)
                sum++;

        projection[(j*dim) + i] = sum;
    } 

Esta seção de código opera somente no eixo z. Os dados principais, devido à maneira como foram construídos, têm um sistema de endereçamento estranho, mas você não precisa se preocupar com isso. Há também outro código para fazer as projeções de outros lados do cubo, mas eles fazem coisas muito diferentes.

questionAnswers(19)

yourAnswerToTheQuestion