Версия на Fortran
program blur_bench
implicit none
integer, parameter :: width = 640, height = 480
integer, parameter :: frames = 20, r = 13
type pixel
byte :: r, g, b
end type
integer :: i, j, f, n
real :: t1, t2
type(pixel), dimension(width,height) :: in, out
call cpu_time(t1)
do f = 1,frames
do n = 1,r
do j = 2,height-1
do i = 2,width-1
out(i,j)%r = (in(i-1,j)%r + in(i+1,j)%r + in(i,j-1)%r + in(i,j+1)%r) / 4
out(i,j)%g = (in(i-1,j)%g + in(i+1,j)%g + in(i,j-1)%g + in(i,j+1)%g) / 4
out(i,j)%b = (in(i-1,j)%b + in(i+1,j)%b + in(i,j-1)%b + in(i,j+1)%b) / 4
end do
end do
do j = 2,height-1
do i = 2,width-1
in(i,j)%r = (out(i-1,j)%r + out(i+1,j)%r + out(i,j-1)%r + out(i,j+1)%r) / 4
in(i,j)%g = (out(i-1,j)%g + out(i+1,j)%g + out(i,j-1)%g + out(i,j+1)%g) / 4
in(i,j)%b = (out(i-1,j)%b + out(i+1,j)%b + out(i,j-1)%b + out(i,j+1)%b) / 4
end do
end do
end do
end do
call cpu_time(t2)
write (*,*) 'Time: ', t2-t1
write (*,*) 'FPS: ', frames/(t2-t1)
end program