That is strange. Ethernet only runs at fixed speeds, the speed is controlled by the ports. In most cases the speed is running at 1gbit but if you have older equipment it can run at 100mbit.
The port will run at 1gbit or run at zero gbit. So if you transfer data for 1 second at 1gbit and 9 seconds at 0gbit you get a 10second average speed of 100mbps. PC show average speed not the actual speed the cable is running.
You might be taking errors on the cable. You should be able to see it by ping the router. It is not very common. You get loss not higher latency. It will cause longer transfer times because of the loss but it does not actually transfer at a different rate. It transfers the data at 1gbit with errors and is discarded.
It would be nice if a pc showed how many data errors it had on the port but I have not found a way to display that easily.
To make things simpler try a pc-pc tranfer inside your house. A old tool called IPERF is extremely simple and because it is simple too it will not be affected by the machines or memory and such.
Now your cable could be the problem if you are buying fake cable. There is a lot of so called CAT whatever that is not actually certified cable. It is CCA cable or it is that silly flat or thin cable. The wire must be pure copper and have a wire size between 22-24. Anything else is not a certified cable according to the eia/tia standards.