C - when using compiler optimizations - produces very fast code. I have post-optimized assembler code created by a good C compiler for a very time critical interrupt. It is still possible to make the code 25% faster when knowing constraints (e.g. an input value is always in a certain range) that the compiler does not know. However the Scheme compiler won't know either!!
This means it is theoretically possible to write code that is 1.3 times faster than the code generated by the C compiler. However it was impossible to speed up the code more.
Another language that is quite fast is Pascal so modern Pascal variants (like FreePascal) may have the same runtime and memory consumption as C compilers.
Scheme is a declarative programming language while C is an imperative programming language. The simple question is: What does "direct equivalent" mean?
Think about the following Scheme code:
(define (example a) (+ (if (> a 1) (example (- a 1)) 0) (somefunc a)))
In C you may implement it like this:
double iffunc(int a,double b,double c)
{
return a?b:c;
}
double example(int a)
{
return iffunc(a>1,example(a-1),0)+somefunc(a);
}
But you may also implement it like this:
double example(int a)
{
int i;
double b;
for(i=1;i<=a;i++) b+=somefunc(i);
return b;
}
In C the second implementation would be the one used by 99% of all programmers. It is much faster than the first one. The first implementation is the "direct equivalent" to the Scheme variant. (It is impossible to write a"for"-loop in Scheme!!)
So if you compare the speed of the first implementation to the speed of the Scheme code you may in fact be 1.5 times faster or even more. Comparing the speed of the second implementation to the code generated by the Scheme compiler I'm sure the C compiler will be faster!