A day, instantly.
48 bits are not an awful lot, also merely generating (which per se does not make a lot of sense) that many keys is very fast.
Even a naive single-threaded CPU implementation on a cheapish (not even remotely close to $1000) desktop computer could do that in a day or two.
In order to be meaningful, you must do something with these keys to verify them. It is explicitly mentioned "no hashing/salting" in the question, so one can safely assume that no expensive key derivation (think beecrypt or such) which artificially slows us down needs to be done.
I will therefore assume that you need to decrypt a block of AES and compare the result to a known plaintext.
This article claimed 11Gbps on a CUDA implementation 6 years ago, which would boil down to about 4 days for brute-forcing your 48-bit key. Assume that a rig with a current upper middleclass or high-class GPU is 3-5 times as fast, and we are at approximately one day for your $1000 budget (give or take a few hours, it makes no difference).
A $1M budget attacker could naively just do that same attack with 1000 machines, which would require a minuscule amount of communication between nodes (add some milliseconds) and place him at around 1 1/2 minutes, give or take a few secs.
If you however assume that an attacker with such a budget is serious about the attack, you must assume that something better is used. A HPC cluster comes to mind as the next naive solution, but why not invest in FPGAs?
If you are serious, you can easily get 10 or 100 times as fast than the "simply use 1000 desktop computers" solution for the same money.
Let's just assume 100 times faster, and we're at 0.9 seconds. Why assume? Well, because it no longer makes a difference at this point.
Practically, it doesn't matter at all whether an attack takes 9 seconds, 0.9 seconds, or 0.00009 seconds. They all fall under instantly. Anything you can crack in 9 seconds is doomed.