Ah buzzwords. So I'm going to demonstrate the effect of hyperthreading on some simple codes (I mainly did this for my own amusement, but it seems like it would help this thread out).
Lets say you have code that is heavily switch dependent, such as the Game of Life. There is little numerical computation but many conditional statements,
Code:
subroutine update(this)
class(elements) :: this
type(elements) :: that
integer :: i,j
integer :: nb
!Allocate the temp grid
allocate(that%grid(this%localRow,this%localCol))
!Copy them
call this%copy(that)
!Evaluate the kittehs
do i=1,this%localRow
do j=1,this%localCol
nb = this%buddies(i,j)
if(this%grid(i,j) == 1) then
if((nb < 2) .or. (nb > 3)) then
that%grid(i,j) = 0
else
that%grid(i,j) = 1
end if
else
if(nb==3) that%grid(i,j) = 1
end if
end do
end do
!Copy back into the one we care about
call that%copy(this)
!throw away the temp
deallocate(that%grid)
end subroutine update
Where this%buddies points to a function full of additional conditional statements. You can see that most processes will be idle in this situation.
Now let's run these routines in both serial and parallel. We'll use OpenMP for shared memory parallelization.
Code:
Fortran $ time ./run_serial
real 0m45.991s
user 0m45.954s
sys 0m0.016s
Fortran $
Now we run the code with OpenMP using 4 threads and dynamic load balancing (with strip partitioning of our domain).
Code:
Fortran $ time ./run_parallel
real 0m13.968s
user 0m52.922s
sys 0m0.150s
Fortran $
We see a 3.29x speedup in total execution time. Not bad for some fast crappy programming.
We continue to now schedule 8 threads with OpenMP
Code:
Fortran $ time ./run_parallel
real 0m11.887s
user 1m20.975s
sys 0m0.392s
Fortran $
This yields a 3.87x speedup. Much closer to a linear speedup for 4 cores (which would be 4x). However note that although we used 8 threads, we will not see an 8x speedup, but we did recover quite a fair bit of that idle time on each core.
This clearly shows that Hyperthreading is not snake oil. However, let me show a caveat to hyperthreading.
Let's say we write a second code that is computationally intensive. For example we wish to square numbers in a pipeline. (I'm not going to outline the code, but basically it's just every thread squares a number and passes it along to the next thread). The numbers will be double precision and generated at random (prior to execution of the program).
So now we run this with 4 threads yielding:
Code:
$ time ./a.out
real 0m6.829s
user 0m1.560s
sys 0m5.638s
Now lets compare this against the same program run with 8 threads (taking advantage of hyperthreading).
Code:
$ time ./a.out
real 0m17.537s
user 0m3.571s
sys 0m16.510s
Ah a rather surprising result! We've actually slowed the program down by 0.38x! Obviously I chose this problem because I knew this would happen, but that is besides the point.
So, back to the question of is Hyperthreading this super amazing thing that makes it all worth while? Not necessarily. If you have a use for it, it's great and can realize some decent benefits. But, over-scheduling a processor can also have some detrimental effects in terms of speed. (read
http://agner.org/optimize/blog/read.php?i=6&v=t)
Also know that although hyperthreading is typically advertised as being able to handle 2 threads per core, this definitely does not mean that you will ever see an 8x speedup. In computationally intensive applications, such as the ones I write, we tend to avoid it all together because it typically only yields a slow down.
-------------------
Now back to the question at hand. Is the i7 faster? yes. Is it worth it? Well, that's up to you. Will it carry you farther into the future? Probably not. Let me elaborate on the farther into the future premise. Back in the day when CPU speed was scaling nicely, getting a faster processor would have been logical. However now, much of the improvements do not deal with processor speed, but rather actual changes to the architecture. For example, the new sandy bridge xeons leave my xeons in the dust! But wait, my xeons have HT and a higher clock speed (and turbo speed) then the new xeons! This is similar to the argument of 'is more horsepower better?' And for those of us that watch top gear, we know that is not always the case. There are so many other aspects that can be improved that quite frankly, the entire line of chips will be outdated at about the same time.
Onto the mater of direct comparison of i5 and i7, I have an i7 iMac as well as an i5 iMac. I have run LINPACK on both, and I can tell you that the i7 is ~20% faster than the i5. (4 threads vs 4 threads, it is slower when using HT because of the conundrum I posed above).
I can also tell you that my xeon cluster is over 1000% faster than my i7 iMac. But for all intensive purposes, that would not yield you any benefit because it can't run any of the software you intend on using.
What it comes down to is purely what do you want out of it.
Go to the store, play with the computers for an hour as if you were at home. If the i5 suits your needs when you use it, then by all means buy it. If you decide that you wish to have the i7 instead, then go for it! Much of what you read on these forums is irrelevant because we are not you, and cannot tell you what is best for you.
Typically, in these situations I recommend 'bang for the buck' choices. What will give you the most noticable difference per $. Today, one of the largest bottlenecks in home computers are the hard drives. If you save money on the processor, you could potentially upgrade to an SSD instead. I guarantee you a good SSD will make a much more noticeable difference in day to day computing tasks (such as opening huge documents like you mentioned, or opening closing applications/photos).
In the world of electronics, you will be outdated within 6 months. The question is, how productive can you be in those 6 months relative to the amount you invested.